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.

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

12 124

12 ответов:

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

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

EDIT

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

ссылка.

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

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

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

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

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

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

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

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

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

варианты:

  • подсеть хоста может быть * разрешить неограниченный доступ ко всем IP-адресам.
  • Edit /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 запись. Это исправило все для меня.

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

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

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

это работает для меня и моих скриптов, удачи вам.

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

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

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

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

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

Failed to add the host to the list of known hosts 

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

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

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

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

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

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

в идеале, вы должны создать самоуправляемый центр сертификации. Начните с создания пары ключей: 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

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

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

для получения более подробной информации см. этой странице.

Я решаю проблему, которая дает ниже написанную ошибку:
Ошибка:
Подлинность сервера ХХХ.ХХХ.ХХХ не может быть установлено.
Ключ RSA отпечатков пальцев 09:6С:эф:компакт-диск:55:С4:4Ф:СС:5а:88:46:0а:А9:27:83:89.

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

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