2009-10-31 3 views
37

Я работаю в сети, где системы с IP-адресом будут часто меняться. Они перемещаются по рабочему столу, а DHCP определяет IP-адрес, который они получают.SSH в Linux: отключение проверки ключа хоста для хостов в локальной подсети (known_hosts)

Непонятно, как отключить кеширование/проверку ключа хоста, чтобы мне не приходилось редактировать файлы ~/.ssh/known_hosts каждый раз, когда мне нужно подключиться к системе.

Меня не интересует аутентификация хоста, все они находятся на сегменте сети 10.x.x.x, и я уверен, что никто не MITM меня.

Есть ли «правильный» способ сделать это? Меня не волнует, предупреждает ли он меня, но останавливаясь и заставляя меня стирать мою запись known_hosts для этого IP-адреса каждый раз раздражает, и в этом случае он действительно не обеспечивает никакой безопасности, потому что я редко подключаюсь к системам более одного или двух раз а затем IP передается другой системе.

Я просмотрел файл ssh_config и увидел, что могу настроить группы, чтобы можно было безопасно подключаться к внешним машинам, и я мог просто игнорировать проверку локальных адресов. Это было бы оптимально.

Из поиска Я нашел некоторые очень сильные мнения по этому вопросу, начиная от «Не связывайся с ним, это для безопасности, просто справляйся с этим» на «Это самая глупая вещь, которую мне когда-либо приходилось иметь дело с, я просто хочу отключить его »... Я где-то посередине. Я просто хочу иметь возможность выполнять свою работу без необходимости чистить адрес из файла каждые несколько минут.

Спасибо.

ответ

9

Предполагая, что вы используете OpenSSH, я полагаю, вы можете установить опцию

CheckHostIP no 

для предотвращения хоста IP-адреса из списка проверяемых в known_hosts. От человека странице:

CheckHostIP

Если этот флаг установлен в положение 'да', SSH (1) будет дополнительно проверить хост IP адреса в файле known_hosts. Этот позволяет ssh определять, изменился ли ключ хоста из-за подмены DNS. Если для параметра установлено значение «нет», проверка не будет выполнена . Значение по умолчанию: 'yes'.

+0

Я добавил раздел в нижней части конфигурационного файла с хоста 10.0.0. * И ниже, я поставил CheckHostIP не Знаете ли вы, нужно ли мне вставлять все остальные настройки или если это дополнительно к * хосту выше? Мне нужно подождать, пока я войду в систему, для которой был установлен «использованный» IP-адрес, чтобы убедиться, что это изменение работает. Я приму ваш ответ, если это сработает. Спасибо. – C4colo

+0

Кажется, что этот трюк 100% ... не знаю, почему, мне придется немного поиграть с ним и посмотреть, смогу ли я заставить его делать то, что я хочу. – C4colo

+0

Что вы подразумеваете под "100%"? Случается ли это иногда, но не с другими? –

80

Это конфигурация я использую для наших постоянно меняющихся хостов EC2:

[email protected]:~$ cat ~/.ssh/config 
Host *amazonaws.com 
     IdentityFile ~/.ssh/keypair1-openssh 
     IdentityFile ~/.ssh/keypair2-openssh 
     User ubuntu 
     StrictHostKeyChecking no 
     UserKnownHostsFile /dev/null 

Это отключает подтверждение StrictHostKeyChecking no хоста, а также использует хороший работник, чтобы предотвратить SSH от сохранения хоста идентификации к постоянному файла UserKnownHostsFile /dev/null Обратите внимание, что в качестве добавленного значения я добавил пользователя по умолчанию, с которым можно подключиться к хосту, и возможность попробовать несколько разных идентификационных ключей.

+1

Ничего себе, что/dev/null взломать. Я всегда забываю, насколько очевидны простые вещи на Linux. Спасибо. – C4colo

+7

Если это решение работает для вас, пожалуйста, примите действующий ответ как ответ на этот вопрос, пожалуйста, помните, что другие люди будут посещать эту страницу вопросов. Если что-то еще не работает для вас, напишите еще один вопрос в комментариях. –

+2

Если я установил UserKnownHostsFile в/dev/null, я получаю это предупреждение каждый раз «Предупреждение: Постоянно добавлено« 10 .9.8.7 »(RSA) в список известных хостов». Любой способ отключить это? –

8

Мне потребовалось некоторое время, чтобы найти. Самый распространенный случай использования, который я видел, - это когда у вас есть туннели SSH для удаленных сетей. Все решения здесь породили предупреждения, которые нарушили мои сценарии Nagios.

Опция мне было нужно:

NoHostAuthenticationForLocalhost yes 

Который, как следует из названия, также применяется только на локальный.

2

Если вы хотите отключить эту функцию временно или без необходимости изменять файлы конфигурации SSH, вы можете использовать:

ssh -o UserKnownHostsFile=/dev/null [email protected] 
Смежные вопросы