ssh: подлинность хоста 'hostname' не может быть установлена
когда я 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 ответов
в зависимости от вашего ssh-клиента вы можете установить параметр StrictHostKeyChecking в нет в командной строке и/или отправить ключ в файл null known_hosts. Эти параметры также можно задать в конфигурационном файле для всех узлов или для заданного набора IP-адресов или имен узлов.
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
редактировать
Как отмечает @IanDunn, для этого существуют риски безопасности. Если ресурс, к которому вы подключаетесь, был подделан злоумышленником, они могут потенциально воспроизведите вызов целевого сервера обратно к вам, обманывая вас, думая, что вы подключаетесь к удаленному ресурсу, в то время как на самом деле они подключаются к этому ресурсу с вашими учетными данными. Вы должны тщательно рассмотреть, является ли это подходящим риском, прежде чем изменять механизм соединения, чтобы пропустить HostKeyChecking.
старый вопрос, который заслуживает лучшего ответа.
вы можете предотвратить интерактивное приглашение без отключения StrictHostKeyChecking
(что небезопасно).
включите в свой скрипт следующую логику:
if [ -z `ssh-keygen -F $IP` ]; then
ssh-keyscan -H $IP >> ~/.ssh/known_hosts
fi
он проверяет, находится ли открытый ключ сервера в known_hosts
. Если не запрашивает открытый ключ с сервера и добавляет его в known_hosts
.
таким образом, вы подвергаетесь атаке "человек в середине" только один раз, что может быть смягчено by:
- обеспечение первого подключения скрипта по защищенному каналу
- проверка журналов или known_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 / config', и в начале файла добавьте следующие строки
Host *
User your_login_user
StrictHostKeyChecking no
IdentityFile ~/my_path/id_rsa.pub
пользователь установлен в your_login_user
говорит, что эти настройки принадлежат your_login_user
StrictHostKeyChecking установлен в НЕТ будет избежать приглашения
IdentityFile-это путь к ключу RSA
это работает для меня и моих скриптов, удачи вам.
лучший способ сделать это-использовать ' BatchMode 'в дополнение к'StrictHostKeyChecking'. Таким образом, ваш скрипт примет новое имя хоста и запишет его в файл known_hosts, но не потребует вмешательства "да/нет".
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
, оставшаяся команда фактически регистрировалась на удаленной машине, чего я не хотел в скрипте
ssh -o StrictHostKeyChecking=no user@ip_of_remote_machine "exit"
Как правило, эта проблема возникает, когда вы изменяете ключи очень часто. На основе сервера может потребоваться некоторое время для обновления нового ключа, созданного и вставленного на сервере. Поэтому после генерации ключа и вставить в сервер, подождите от 3 до 4 часов, а затем попробовать. Проблема должна быть решена. Это случилось со мной.
этого -> chmod +w ~/.СШ/если вы Это добавляет запись в файл ~/.СШ/если вы. После этого удаленный хост будет добавлен в файл known_hosts при следующем подключении к нему.
в идеале, вы должны создать самоуправляемый центр сертификации. Начать с generating a key pair:
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
закрытый ключ.
хотя для этого требуется одноразовая конфигурация на стороне клиента, вы можете доверять нескольким серверам, включая те, которые еще не были подготовлены (пока вы подписываете каждый сервер, это есть.)
дополнительные сведения см. В разделе этой странице.
Я решаю проблему, которая дает ниже письменную ошибку:
Ошибка:
Подлинность хоста ' 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. Теперь вы можете подключиться к этому хозяин.
Это решение работает сейчас......