SSH Linux

SSH: Host key verification failed — REMOTE HOST IDENTIFICATION HAS CHANGED

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

SSH предупреждает, что ключ сервера изменился. Ниже — причины и порядок действий от простого к сложному.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Если не помогло
  5. Проверка
  6. Удаление старой записи
  7. Особые ситуации

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

Сообщение
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! Host key verification failed.

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! и Host key verification failed означают, что отпечаток ключа сервера не совпадает с записанным в ~/.ssh/known_hosts. Причины безобидные (сервер переустановлен, IP перешёл к другой машине, сменился ключ) и опасные (атака «человек посередине»).

Прежде чем удалять запись, убедитесь, что смена ключа ожидаема.

Сверьте отпечаток по независимому каналу.

SSH предупреждает, что ключ сервера изменился. Чаще всего сервер переустановлен либо IP назначили другой машине, но это может быть и перехват соединения, поэтому убедитесь, что смена ожидаема.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Сервер переустановленНовый ключ.Удалите старую запись.
IP принадлежит другому серверуПереиспользование.Проверьте.
Возможна атака посредникаНеожиданно.Не подключайтесь.
Изменён ключ хостаАдминистратор.Уточните отпечаток.

#Пошаговое решение

  1. Прочитайте номер строки в known_hostsВ терминале вашего компьютера повторите SSH-подключение и сохраните сообщение REMOTE HOST IDENTIFICATION HAS CHANGED, имя узла, тип ключа и место known_hosts. Это предупреждение может означать как переустановку сервера, так и подмену соединения; пока подлинность ключа не подтверждена, не вводите пароль и не отключайте StrictHostKeyChecking.
  2. Убедитесь, что смена ключа ожидаемаСвяжитесь с администратором сервера по уже известному надёжному каналу (панель провайдера, корпоративный телефон). Спросите, действительно ли меняли сервер, DNS-адрес или SSH-ключ, и получите отпечаток нового публичного ключа оттуда, а не из самого подозрительного сеанса SSH.
  3. Сверьте отпечатокАдминистратор на консоли подлинного сервера может выполнить sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub и передать отпечаток по независимому каналу. На клиенте можно посмотреть предлагаемый ключ через ssh-keyscan -t ed25519 имя-хоста | ssh-keygen -lf -, но сканирование не подтверждает подлинность: сравните точные символы отпечатка с доверенным значением.
  4. Удалите старую записьТолько после совпадения отпечатка сделайте копию ~/.ssh/known_hosts, затем на своём компьютере выполните ssh-keygen -R имя-хоста; для нестандартного порта укажите запись [имя-хоста]:порт. Если подключаетесь и по IP, проверьте и соответствующую запись IP. Эта команда меняет лишь доверенные ключи клиента; сервер она не трогает.
  5. Подключитесь заново и подтвердите ключПовторно подключитесь ssh пользователь@имя-хоста. Клиент покажет новый отпечаток — ещё раз сравните его с полученным независимо, и лишь при полном совпадении подтвердите yes. Если отпечаток отличается, прекратите подключение и исследуйте DNS, адрес и возможную подмену; отсутствие предупреждения само по себе не доказывает безопасность.
  6. Удаляет старую запись хоста из known_hosts
    Linux · Терминал (Bash)Команда
    Удаляет старую запись хоста из known_hosts.
    ssh-keygen -R example.com

#Если не помогло

Не удаляйте запись автоматически, если смена ключа неожиданна: это может быть признаком атаки.

#Проверка

Спросите администратора или проверьте в панели хостинга: сервер переустанавливали? Получите отпечаток с самого сервера через консоль: ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub. Сравните с тем, что показывает клиент: ssh-keyscan -t ed25519 host | ssh-keygen -lf -. Если отпечатки совпадают, всё в порядке; если нет и перемен не было — не подключайтесь, возможна подмена.

#Удаление старой записи

Удалите строку из known_hosts: ssh-keygen -R host (или ssh-keygen -R 203.0.113.10, и отдельно для IP, и для имени). Номер строки указан в сообщении (Offending ECDSA key in /home/user/.ssh/known_hosts:12): можно удалить его вручную: sed -i '12d' ~/.ssh/known_hosts. Подключитесь снова и подтвердите новый отпечаток yes.

#Особые ситуации

Для облачных серверов, часто меняющих IP, и для автоматизации используйте псевдонимы имён и HostKeyAlias в ~/.ssh/config. Не отключайте проверку навсегда (StrictHostKeyChecking no): это ослабляет защиту; для временных тестовых машин используйте -o UserKnownHostsFile=/dev/null разово. Если на одном IP сервера по очереди (балансировщик), у них должны быть одинаковые ключи хоста.

Linux · Терминал (Bash)Команда
Получение отпечатка ключа сервера и удаление старой записи из known_hosts.
ssh-keyscan -t ed25519 host.example.com | ssh-keygen -lf -
# Полученный отпечаток обязательно сверьте с доверенным источником!
# ssh-keygen -R host.example.com используйте ТОЛЬКО после подтверждения смены ключа.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.