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