Подтвердить что ты не робот

Ssh: Невозможно установить подлинность имени хоста хоста

Когда я 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.

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

4b9b3361

Ответ 1

В зависимости от вашего клиента ssh вы можете установить для параметра StrictHostKeyChecking значение no в командной строке и/или отправить ключ в файл null known_hosts. Вы также можете установить эти параметры в своем конфигурационном файле либо для всех хостов, либо для заданного набора IP-адресов или имен хостов.

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

ИЗМЕНИТЬ

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

Ссылка.

Ответ 2

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

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

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

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

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

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

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

Ответ 3

Чтобы отключить (или отключить управление), добавьте следующие строки в начало /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

Подобный вопрос на superuser.com - см. https://superuser.com/a/628801/55163

Ответ 4

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

Ответ 5

Лучший способ сделать это - использовать "BatchMode" в дополнение к "StrictHostKeyChecking". Таким образом, ваш script примет новое имя хоста и напишет его в файл known_hosts, но не будет требовать да/нет.

ssh -o BatchMode=yes -o StrictHostKeyChecking=no [email protected] "uptime"

Ответ 6

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

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

Пользователь, установленный в your_login_user, говорит, что эти настройки принадлежат вашему_login_user
StrictHostKeyChecking set no no будет избегать подсказки
IdentityFile - это путь к ключу RSA

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

Ответ 7

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

Он отображается только один раз.

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

Failed to add the host to the list of known hosts 

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

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

Ответ 8

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

Ответ 9

Что касается ответа Cori, я изменил его и использовал ниже команду, которая работает. Без exit оставшаяся команда фактически регистрировалась на удаленном компьютере, чего я не хотел в script

ssh -o StrictHostKeyChecking=no [email protected]_of_remote_machine "exit"

Ответ 10

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

Ответ 11

В идеале вы должны создать центр сертификации с самостоятельным управлением. Начните с создания пары ключей: 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/ ~/.ssh/known_hosts @cert-authority *.example.com ssh-rsa AAAAB3Nz...cYwy+1Y2u/

Выше содержится:

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

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

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

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

Ответ 12

Добавьте их в ваш /etc/ssh/ssh_config

Host *
UserKnownHostsFile=/dev/null
StrictHostKeyChecking=no

Ответ 13

Запустите это на хост-сервере

chmod -R 700 ~/.ssh

Ответ 14

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

Ответ 15

Я решаю проблему, которая дает ниже письменную ошибку:
Ошибка:
Невозможно установить подлинность хоста "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. Теперь вы можете подключиться к этому хосту.

Теперь это решение работает...