SSH: подлинность хоста «хоста имя» не может быть установлена
-
01-10-2019 - |
Вопрос
Когда я 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. Теперь вы можете подключиться с этим хостом.
Это решение работает сейчас ......