Linux SSH_ERR_HKEYВысокая

Исправление ошибки SSH host key verification failed — пошаговое руководство

Статья объясняет, что означает ошибка SSH host key verification failed, почему она возникает и как её исправить с помощью простых команд. После прочтения вы сможете восстановить SSH-подключение и предотвратить повторение проблемы.

Обновлено 25 июня 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04 LTSUbuntu 22.04 LTSDebian 11CentOS 8

Что означает ошибка SSH_ERR_HKEY

Когда вы запускаете ssh user@host и видите сообщение “Невозможно проверить ключ хоста” (или на английском — ssh: Could not connect to secure shell server: Invalid host key), SSH-клиент отклоняет подключение, потому что публичный ключ сервера не совпадает с тем, что сохранён в файле ~/.ssh/known_hosts. Эта ошибка означает, что сервер, к которому вы подключаетесь, либо изменился (например, переустановили ОС), либо файл known_hosts устарел.

Причины возникновения

  1. Устаревший ключ в known_hosts — ключ хоста не обновлялся после переустановки сервера или смены IP.
  2. Изменение SSH-конфигурации сервера — новый ключ сгенерирован другим SSH-демоном (например, новым RSA/Ed25519 ключом).
  3. Несоответствие между IPv4/IPv6 или DNS-именем — в файле записан один адрес, а подключение происходит по другому.
  4. Повреждение файла known_hosts — случайное редактирование или перезапись файла.
  5. Настройки клиента, запрещающие проверкуStrictHostKeyChecking=no в конфигурации SSH-клиента.

Способы решения

Способ 1: Обновление ключа через SSH

  1. Проверьте запись ключа в known_hosts Запустите grep -E "^[0-9.]+" ~/.ssh/known_hosts или grep <IP> для поиска записи нужного хоста.
  2. Удалите устаревший ключ Удалите строку с помощью sed -i "/^<IP>/d" ~/.ssh/known_hosts или отредактируйте файл вручную.
  3. Подключитесь, чтобы добавить новый ключ Выполните ssh -o StrictHostKeyChecking=yes user@host. SSH-клиент автоматически добавит новый ключ в known_hosts.
  4. Проверьте, что ключ записан Запустите ssh user@host — теперь подключение должно установиться без ошибки проверки.

Способ 2: Использование ssh-keygen для удаления ключа

  1. Определите хост/IP Запомните IP или DNS-имя, для которого нужна очистка.
  2. Удалите ключ вручную Выполните ssh-keygen -R <IP> -f ~/.ssh/known_hosts. Если файл находится в стандартном месте, команда ssh-keygen -R <IP> suffices.
  3. Повторите попытку подключения После удаления запустите ssh user@host — система запросит новый ключ.

Способ 3: Корректировка настроек SSH-клиента

  1. Откройте файл конфигурации Используйте редактор, например nano ~/.ssh/config.
  2. Добавьте параметры проверки Вставьте следующие строки:
    Host *
        StrictHostKeyChecking yes
        UserKnownHostsFile=.ssh/known_hosts
    
  3. Сохраните и выйдите Нажмите Ctrl+O, Enter, затем Ctrl+X.
  4. Примените изменения Запустите ssh -o StrictHostKeyChecking=yes user@host — клиент будет принудительно проверять ключи.

Способ 4: Ручное редактирование known_hosts

  1. Откройте файлnano ~/.ssh/known_hosts.
  2. Удалите все строки, содержащие старый ключ Используйте sed -i '/^<IP>/d' ~/.ssh/known_hosts или вручную удалите нужные строки.
  3. Сохраните изменения
  4. Подключитесь для добавления нового ключаssh -o StrictHostKeyChecking=yes user@host.
  5. Проверьте результатssh user@host — ошибка исчезнет.

Профилактика

  • Регулярно обновляйте known_hosts после изменения IP или переустановки сервера.
  • Используйте ssh-keygen -R для быстрой очистки устаревших ключей.
  • Ведите резервную копию ~/.ssh/known_hosts в облаке или на USB-накопителе.
  • Настройте автоматическую проверку в конфигурации клиента (StrictHostKeyChecking=yes), чтобы избежать пропуска проверок.
  • Следите за изменениями SSH-конфигурации сервера и фиксируйте новые ключи в репозитории (если вы администрируете несколько хостов).

Часто задаваемые вопросы

Почему появляется сообщение «Невозможно проверить ключ хоста» при подключении по SSH?
Можно ли отключить проверку ключа хоста для быстрого подключения?
Как обновить известный ключ хоста в файле known_hosts?
Какие версии OpenSSH склонны к этой ошибке?

Полезное

Проверьте запись ключа в known_hosts
Удалите устаревший ключ
Подключитесь, чтобы добавить новый ключ
Проверьте, что ключ записан
Настройте автоматическую проверку в SSH-клиенте
Очистите старые записи вручную

Эта статья помогла вам решить проблему?