Как я могу избежать проверки хоста SSH для известных хостов?
Каждый раз, когда я пытаюсь подключиться к серверу, используя 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)?
7 ответов
Использовать -o
вариант,
ssh -o "StrictHostKeyChecking no" user@host
Добавьте следующие строки в начало /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
Вы должны получить это только при первом подключении к новому хосту. После того, как вы ответите yes
хост хранится в ~/.ssh/known_hosts
и вы не получите приглашение при следующем подключении.
Обратите внимание, что если ~/.ssh/known_hosts
не может быть написано по какой-либо причине (например, проблема с разрешениями), тогда вам будет предлагаться каждый раз, когда вы подключаетесь.
Лучший способ (поскольку он не жертвует безопасностью) - это один раз подключиться ко всем компьютерам с одного клиента (каждый раз будет запрашиваться, всегда отвечайте "да"). Как указано в другом ответе, ключи будут сохранены в ~/.ssh/known_hosts. Затем скопируйте этот файл на каждый клиентский компьютер, к которому вы позже захотите подключиться (возможно, для каждой учетной записи пользователя, которую вы используете). Тогда все эти учетные записи будут "знать" компьютеры, следовательно, не будут получать подсказки.
Преимущество по сравнению с простым отключением приглашения заключается в том, что SSH может на самом деле проверять наличие атаки MITM.
Если вы хотите отключить подтверждение, а не аутентификацию, вы можете использовать опцию: "-o CheckHostIP=no"
ssh -i sergeys_rsa_key.pem -o CheckHostIP=no brin@8.8.8.8
Я столкнулся с аналогичной проблемой, когда, несмотря на использование вышеупомянутого проверенного решения, мой ssh не работал, потому что файл known_hosts отсутствовал в каталоге ~/.ssh/, а файловая система была доступна только для чтения. ТАК, во время выполнения мне также не удалось создать файл ~/.ssh/known_hosts.
Если вы столкнулись с подобной проблемой, посмотрите, можете ли вы записать файл known_hosts в папку /tmp. В большинстве случаев запись разрешена даже в файловой системе, доступной только для чтения.
Позже в команде ssh вы можете указать ssh для чтения файла known_hosts из /tmp.
ssh -o UserKnownHostsFile=/tmp/known_hosts -o StrictHostKeyChecking=no user_name@destination_server_ip
Проверьте разрешения на вашем ~/.ssh/known_hosts
файл. Мои были неверны, когда я получил эту проблему. Я исправил это с помощью:
chmod 0600 ~/.ssh/known_hosts
Вероятно, это связано с тем, что ваш сервер ключей ssh изменился, поскольку IP-адрес или домен сервера совпадают, но несоответствие ключей ssh.
Вы должны удалить сохраненный ключ в /home/$user/.ssh/known_hosts
чтобы избежать этого сообщения.
Я исправил это, удалив все ключи в этом файле, поэтому для этого доменного имени был создан новый токен.