После переустановки сервера изменился SSH host key: как обновить доверие

Сервер переустановили, DNS-имя сохранили, а SSH показывает предупреждение об изменившемся ключе хоста. В такой момент легко удалить весь known_hosts, чтобы продолжить работу. Но предупреждение сообщает об изменении идентичности удалённой стороны. Нужно подтвердить новое соответствие имени и сервера, затем обновить ровно его.

Разделите два типа ключей

Ключ пользователя доказывает серверу, кто подключается. Ключ хоста позволяет клиенту проверить сервер. Замена пользовательского приватного ключа не исправляет предупреждение host identification has changed. Сначала убедитесь, что имя и порт ведут на ожидаемую машину, особенно если переустановка сопровождалась сменой адреса или балансировщика.

ssh-keygen -F app.example
ssh-keygen -F '[app.example]:2222'

Первый вызов ищет обычное имя, второй — запись для нестандартного порта. Такой поиск работает и с хешированными записями. Проверьте путь файла, который указан в предупреждении: пользовательская конфигурация может задавать отдельный UserKnownHostsFile. Не редактируйте другой файл только потому, что он привычнее.

Получите fingerprint по доверенному пути

Попросите администратора проверить открытый ключ на консоли сервера или в согласованной системе учёта. Если вы управляете машиной, вычислите fingerprint соответствующего публичного host key через консоль провайдера. Значение должно прийти по каналу, который не зависит от сомнительного SSH-подключения.

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

Команда выполняется на проверяемом сервере через доверенную консоль. Сравните тип ключа и SHA256 fingerprint с новым значением клиента. Простое получение ключа через ssh-keyscan показывает, что сейчас отдаёт сеть, но само по себе не удостоверяет владельца. Это полезный способ собрать ключ, если доверенное ожидаемое значение уже известно.

Обновите конкретное соответствие

ssh-keygen -R app.example
ssh app.example

Удаление выполняйте после подтверждения замены и для того имени с портом, которое реально используется. При повторном подключении сравните показанный fingerprint с проверенным. Для нестандартного порта удаляйте соответствующую запись в квадратных скобках. Если настроен отдельный файл, укажите его опцией f у ssh-keygen.

Если предупреждение осталось, посмотрите, не проверяется ли также IP-адрес или другой алиас. Не удаляйте соседние записи пакетно: они могут относиться к другой машине с похожим именем. Проверьте фактический HostName через ssh с опцией G и повторите точечную работу с нужной записью.

При плановой ротации без переустановки OpenSSH поддерживает механизм UpdateHostKeys. Его применимость зависит от уже установленного доверия и настроек клиента. Он полезен для контролируемой смены нескольких ключей, но не отменяет первичную проверку неизвестного сервера.

Выстройте проверяемую процедуру доступа. Откройте программу Linux и Bash для DevOps-инженеров. Настройка окружения и доступов на учебном сервере помогает отработать такой порядок заранее и связать предупреждение клиента с конкретным изменением инфраструктуры.

Ещё по теме

Продолжить на практике

  • Linux и Bash для DevOps-инженеров ↗

    Linux для работы с серверами: процессы, права, systemd, сеть, диски и логи. Автоматизируйте повседневные задачи на Bash и разберите типичные сбои сервиса — от занятого порта до переполненного диска.