SSH: подлинность хоста «хоста имя» не может быть установлена

StackOverflow https://stackoverflow.com/questions/3663895

Вопрос

Когда я SSH на машину, когда-нибудь я получаю это сообщение об ошибке, и это подсказывает «да» или «нет». Это вызывает возникновение проблем при работе со сценариев, которые автоматически SSH на другие машины.

Предупреждение:

The authenticity of host '<host>' can't be established.
ECDSA key fingerprint is    SHA256:TER0dEslggzS/BROmiE/s70WqcYy6bk52fs+MLTIptM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pc' (ECDSA) to the list of known hosts.

Есть ли способ автоматически сказать «да» или игнорировать это?

Это было полезно?

Решение

В зависимости от вашего клиента SSH вы можете установить вариант STRICHOSTKEYCECKECKECKING UNTER NO на командной строке, а / или отправить ключ к файлу NULL SEED_HOSTS. Вы также можете установить эти параметры в файл конфигурации, либо для всех хостов, либо для данного набора IP-адресов, либо имена хостов.

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

РЕДАКТИРОВАТЬ

Как отмечает @iandunn, существуют риски безопасности для этого. Если ресурс, который вы подключаетесь к тому, был подделын злоумышленником, они могут потенциально воспроизвести задание сервера назначения к вам, обманывая вас, думая, что вы подключаетесь к удаленному ресурсу, пока на самом деле они подключаются к этому ресурсу с ваши полномочия. Вы должны тщательно рассмотреть вопрос о том, является ли это подходящий риск, чтобы принять участие, прежде чем изменять механизм подключения к пропущению HostKeyCrecking.

Ссылка.

Другие советы

Старый вопрос, который заслуживает лучшего ответа.

Вы можете предотвратить интерактивную подсказку без отключения StrictHostKeyChecking (что небезопасно).

Включите следующую логику в свой скрипт:

if [ -z `ssh-keygen -F $IP` ]; then
  ssh-keyscan -H $IP >> ~/.ssh/known_hosts
fi

Он проверяет, находится ли открытый ключ сервера в known_hosts. Отказ Если нет, он запрашивает открытый ключ с сервера и добавляет его к known_hosts.

Таким образом, вы подвержены атаке человека, только один раз, которые могут быть смягчены:

  • Обеспечение того, чтобы скрипт подключился впервые через безопасный канал
  • Осмотрите журналы или известные_hosts, чтобы проверить отпечатки пальцев вручную (для выполнения только один раз)

Чтобы отключить (или контролировать отключение), добавьте следующие строки в начало /etc/ssh/ssh_config...

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

Опции:

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

Видеть http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html.

Похожие вопросы на superuser.com - см. https://superuser.com/a/628801/55163.

Убедись ~/.ssh/known_hosts пишется. Это исправило это для меня.

Лучший способ пойти в это должен использовать «BatchMode» в дополнение к «StricthostkeyKecking». Таким образом, ваш сценарий примет новый имеющий имя хоста и записывает его в файл Seleant_Hosts, но не потребует вмешательства да / нет.

ssh -o BatchMode=yes -o StrictHostKeyChecking=no user@server.example.com "uptime"

Отредактируйте свой файл конфигурации, обычно расположенный в '~ ~ / .ssh / config', а в Beggining файла добавьте строки ниже

Host *
    User                   your_login_user
    StrictHostKeyChecking  no
    IdentityFile          ~/my_path/id_rsa.pub

Пользователь установлен your_login_user говорит, что эти настройки принадлежат к your_login_user
STRICHOSTKEYKECKING, чтобы не избежать быстрее
Идентификатор имеет путь к ключу RSA

Это работает для меня и моими сценариями, удачи вам.

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

Это просто отображается один раз.

Если он все еще появляется после второго соединения, проблема, вероятно, в письменной форме known_hosts файл. В этом случае вы также получите следующее сообщение:

Failed to add the host to the list of known hosts 

Вы можете исправить это, изменив владельца изменения разрешений файла, который должен быть написан для записи вашего пользователя.

sudo chown -v $USER ~/.ssh/known_hosts

Со ссылкой на ответ CORI я изменил его и использовал ниже командую, которая работает. Без exit, Оставшаяся команда фактически была ввение в систему для удаленной машины, которую я не хотел в скрипте

ssh -o StrictHostKeyChecking=no user@ip_of_remote_machine "exit"

Сделать это -> chmod +w ~/.ssh/known_hosts. Отказ Это добавляет разрешение на запись на файл в ~/.ssh/known_hosts. Отказ После этого удаленный хост будет добавлен в known_hosts файл при подключении к нему в следующий раз.

Обычно эта проблема возникает, когда вы очень часто изменяете ключи. На основе сервера может потребоваться некоторое время, чтобы обновить новый ключ, который вы создали и вставляли на сервере. Поэтому после создания ключа и вставляя на сервере, подождите 3-4 часа, а затем попробуйте. Проблема должна быть решена. Это случилось со мной.

В идеале вам следует создать самообладаемый авторитет сертификата. Начните с генерации ключевой пары: ssh-keygen -f cert_signer

Затем подпишите ключ общего хоста каждого сервера: ssh-keygen -s cert_signer -I cert_signer -h -n www.example.com -V +52w /etc/ssh/ssh_host_rsa_key.pub

Это генерирует подписанный ключ общественного хоста: /etc/ssh/ssh_host_rsa_key-cert.pub

В /etc/ssh/sshd_config, точка HostCertificate к этому файлу: HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub

Перезапустите службу SSHD: service sshd restart

Затем на SSH-клиенте добавьте следующее в ~/.ssh/known_hosts: @cert-authority *.example.com ssh-rsa AAAAB3Nz...cYwy+1Y2u/

Выше находится:

  • @cert-authority
  • Домен *.example.com
  • Полное содержание открытого ключа cert_signer.pub

То cert_signer Открытый ключ доверяет любому серверу, чей ключ общественного хоста подписан cert_signer закрытый ключ.

Хотя это требует единовременной конфигурации на стороне клиента, вы можете доверять нескольким серверам, включая те, которые еще не были предоставлены (до тех пор, пока вы подписываете каждый сервер, то есть).

Для более подробной информации см. Эта вики.

Добавьте это в свой / etc / ssh / ssh_config

Host *
UserKnownHostsFile=/dev/null
StrictHostKeyChecking=no

Запустите это в хост-сервере, это проблема предчувствия

chmod -R 700 ~/.ssh

У меня была та же ошибка и хотела обратить внимание на тот факт, что - как только это произошло со мной - у вас могут быть неправильные привилегии.
Вы настроили свой .ssh каталог как обычный или root Пользователь и, таким образом, вы должны быть правильным пользователем. Когда появилась эта ошибка, я был root Но я настроил .ssh как обычный пользователь. Выезд root починил это.

Я решаю проблему, которая дает ниже написанную ошибку:
Ошибка:
Подлинность хоста 'xxx.xxx.xxx' не может быть установлена.
RSA ключевой отпечаток пальца 09: 6C: EF: CD: 55: C4: 4F: SS: 5A: 88: 46: 0A: A9: 27: 83: 89.

Решение:
1. Установите любой инструмент OpenSSH.
2. Запустите команду SSH
3. Это попросит вы добавить этот хост, как. Примите да.
4. Этот хост добавит в известное список хостов.
5. Теперь вы можете подключиться с этим хостом.

Это решение работает сейчас ......

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top