Host key verification failed при подключении к серверу
Клиент запоминает ключ сервера при первом подключении. Если ключ изменился, клиент отказывается соединяться: так выглядит и переустановка системы, и подмена сервера. Различить помогает отпечаток ключа.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Сервер переустановлен, ключи созданы заново
При установке системы генерируются новые ключи хоста. Прежний отпечаток в списке известных узлов больше не совпадает.
-
Адрес указывает на другой сервер
Смена адресации, перенос имени, балансировщик перед несколькими машинами — во всех случаях ключ будет другим.
-
Ключи восстановлены из копии не полностью
Если восстановили только часть ключей, сервер предъявляет другой алгоритм, и отпечаток не совпадает с ожидаемым.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Отпечаток ключа сервера для сверки.
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubЗаписанный у клиента ключ для этого узла.
ssh-keygen -F имя-сервераРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- При установке системы генерируются новые ключи хоста. Прежний отпечаток в списке известных узлов больше не совпадает.
- Как проверить
-
Сверьте отпечаток на самом сервере.
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
- Как исправить
-
Сверив отпечаток любым надёжным способом, удалите старую запись у клиента и подключитесь заново.
ssh-keygen -R имя-или-адрес-сервера
- Почему происходит
- Смена адресации, перенос имени, балансировщик перед несколькими машинами — во всех случаях ключ будет другим.
- Как проверить
-
Посмотрите, куда ведёт имя.
getent hosts имя-сервера ssh-keygen -F имя-сервера
- Как исправить
- Уточните, к какой машине вы подключаетесь. Для нескольких машин за одним именем настройте общий ключ хоста или отдельные имена.
- Почему происходит
- Если восстановили только часть ключей, сервер предъявляет другой алгоритм, и отпечаток не совпадает с ожидаемым.
- Как проверить
-
Посмотрите набор ключей на сервере.
sudo ls -l /etc/ssh/ssh_host_*
- Как исправить
- Восстановите все файлы ключей хоста из копии или сгенерируйте заново, разослав новый отпечаток тем, кто подключается.
Пример вывода
Ключ сервера изменился после переустановки. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Host key verification failed.
Связанные ошибки
- sshd: отказ аутентификации из-за прав на файлы Вход по ключу не работает: слишком широкие права на домашний каталог или authorized_keys. Разбор через журнал sshd.
- sshd: Bad configuration option и отказ запуска sshd не запускается из-за ошибки в sshd_config: неизвестный параметр, устаревшая настройка, ошибка в include.
- sshd: Too many authentication failures Соединение обрывается до ввода пароля: клиент перебрал все ключи из агента. Как ограничить набор ключей.
- Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- sshd: pam_unix и ошибки открытия сеанса Вход по ssh не завершается: ошибки PAM при открытии сеанса. Полный диск, закрытый домашний каталог, ограничения модулей.
- sshd: отказ в подключении из-за MaxStartups Часть подключений отклоняется под нагрузкой: предел незавершённых аутентификаций. Как считать значение.
- sshd: смена порта не действует из-за ssh.socket Порт в sshd_config игнорируется, потому что адрес слушает systemd через сокет-активацию. Где менять порт.
- Apache: Invalid command — не включён модуль Apache не запускается: директива требует модуль, который не подключён. Как найти нужный модуль и включить.
Где встречается чаще всего
Источники
- Документация OpenSSH: ключи хоста
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено пересозданием ключей хоста на тестовой машине.