Как я могу избежать проверки хоста SSH для известных хостов?


170

Каждый раз, когда я пытаюсь подключиться к серверу, используя SSH, я получаю следующее приглашение. Я набираю «да», но есть ли способ это исправить?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 

8
/ dev / null существует для тех, кто думает, что они невосприимчивы к человеку в середине атаки :)
Тим Пост

1
Худшая часть: наберите, yчтобы сэкономить время, и он жалуется: Please type 'yes' or 'no': (хмф)
ADTC

Ответы:


235

Используйте -oопцию,

ssh -o "StrictHostKeyChecking no" user@host

1
Возможно, вы захотите использовать альтернативный файл идентификации с флагом '-i'
MUY Бельгия

Какой смысл использовать альтернативный файл идентификации? Я имею в виду, что если вы подключаетесь к скомпрометированному хосту, какая разница в том, как вы проходите аутентификацию - это не значит, что скомпрометированный хост тоже может украсть ваш ключ.
Dagelf

102

Добавьте следующие строки в начало /etc/ssh/ssh_config...

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Параметры:

  • Подсеть хоста может *позволять неограниченный доступ ко всем IP-адресам.
  • Изменить /etc/ssh/ssh_configдля глобальной конфигурации или ~/.ssh/configдля пользовательской конфигурации.

См. Http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html.


2
Жаль, что я могу сказать тебе только один раз. Установка KnownHosts в / dev / null - гениально.
J0hnG4lt

1
Вы самый умный.
Дарт Egregious

30
Ха! Скажи моей жене.
ДжимФред

30

Вы должны получить это только при первом подключении к новому хосту. После того, как вы ответите, yesхост будет сохранен, ~/.ssh/known_hostsи вам не будет предложено при следующем подключении.

Обратите внимание, что если ~/.ssh/known_hostsне может быть написано по какой-либо причине (например, проблема с разрешениями), вам будет предложено при каждом подключении.


7
Вопрос в том, чтобы избежать подсказки?
Shantanuo

Я попытался добавить "CheckHostIP no" в файл / etc / ssh / ssh_config. Но, похоже, это не работает
Shantanuo

2
sudo chown -R пользователь: пользователь .ssh; sudo chmod 700 .ssh; sudo chmod -R 600 .ssh /; ssh-keygen -R $ hostname и переподключение, которое должно устранить ВСЕ проблемы и ТОЛЬКО когда-либо повторно запрашивать, если ssk_Hostkey был взломан с помощью | изменился или вы стали жертвой MITM.
linuxdev2013

1
он говорит «каждый раз», так что этот ответ супер уместен
tarikakyol

12

Лучший способ (поскольку он не жертвует безопасностью) - это один раз подключиться ко всем компьютерам с одного клиента (каждый раз будет запрашиваться, всегда отвечайте «да»). Как указано в другом ответе, ключи будут сохранены в ~ / .ssh / known_hosts. Затем скопируйте этот файл на каждый клиентский компьютер, к которому вы позже захотите подключиться (возможно, для каждой учетной записи пользователя, которую вы используете). Тогда все эти учетные записи будут «знать» компьютеры, следовательно, не будут получать подсказки.

Преимущество по сравнению с простым отключением приглашения заключается в том, что SSH может на самом деле проверять наличие атаки MITM.


1
Хотя, если вы часто пользуетесь ssh через прямые соединения, вам нужно добавить это в / etc / ssh / ssh_config: Host 127.0.0.1 NoHostAuthenticationForLocalhost yes
Dagelf

1

Если вы хотите отключить подтверждение, а не аутентификацию, вы можете использовать опцию: "-o CheckHostIP = no"

ssh -i sergeys_rsa_key.pem -o CheckHostIP=no brin@8.8.8.8

ОП уже получил тот же ответ и принял его.
Аян

0

Вероятно, это связано с тем, что ваш сервер ключей ssh ​​изменился, поскольку IP-адрес или домен сервера совпадают, но несоответствие ключей ssh.

Вы должны удалить сохраненный ключ, /home/$user/.ssh/known_hostsчтобы избежать этого сообщения.

Я исправил это, удалив все ключи в этом файле, поэтому для этого доменного имени был создан новый токен.


1
Ключ изменился производит много нелицеприятного сообщение с коробкой atsigns и WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! и IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!во всех колпачках. Сообщение в вопросе появляется, только если в нем еще нет записи known_hosts.
dave_thompson_085

-1

Проверьте разрешения для вашего ~/.ssh/known_hostsфайла. Мои были неверны, когда я получил эту проблему. Я исправил это с помощью:

chmod 0600 ~/.ssh/known_hosts
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.