При попытке подключения к виртуальной машине или серверу (далее – хосту) вы можете столкнуться с подобным сообщением:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
4e:10:78:39:a6:cd:11:10:3a:cd:1b:a2:91:cd:e5:5c.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:1
RSA host key for 203.0.113.14 has changed and you have requested strict checking.
Host key verification failed.
Это сообщение указывает, что отпечаток ключа хоста, сохранённый в вашем файле known_hosts, больше не совпадает с отпечатком ключа, представленным хостом при попытке подключения. Это может быть вызвано законными изменениями на сервере, например, после переустановки операционной системы, замене ключа или изменения настроек SSH. Также существует риск атаки “человек посередине” (man-in-the-middle), при которой злоумышленник может перехватывать или подменять данные. Это серьёзная угроза безопасности.
Решение:
Для решения требуется убедиться в подлинности отпечатка ключа хоста, после чего удалить неактуальные записи о нем в системе клиенте.
Определение подлинности отпечатка ключа
Чтобы проверить подлинность отпечатка ключа, предоставляемого сервером при подключении по SSH, сравните его с реальным отпечатком публичного ключа сервера. Для этого необходимо подключиться к серверу без использования SSH, используя альтернативный способ управления, например, физический доступ, IPMI или консоль панели управления. Шаги для подключения через консоль описаны в инструкции “Подключение через консоль панели управления”.
После подключения к серверу выполните команду для генерации отпечатка публичного ключа:
ssh-keygen -lf <Путь_к_ключу>
где:
- -l – Опция для отображения отпечатка ключа (fingerprint) в формате SHA256.
- -f – Опция для указания пути к файлу публичного ключа хоста.
- <Путь_к_ключу> — полный путь к публичному ключу хоста на сервере. Например:
- /etc/ssh/ssh_host_rsa_key.pub для ключа RSA.
- /etc/ssh/ssh_host_ecdsa_key.pub для ключа ECDSA.
- /etc/ssh/ssh_host_ed25519_key.pub для ключа ED25519.
Например, для ключа RSA команда может выглядеть следующим образом:
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
А результат её выполнения может выглядеть так:
2048 SHA256:tXw8aipPPyyL4KBAjTtBvHU7K//HzkXuTtdLij2yJ2U root@server (RSA)
Сравните отпечаток, полученный на сервере с помощью команды ssh-keygen -lf, с отпечатком, отображаемым на клиенте в предупреждении при подключении через SSH. Если отпечатки совпадают, ключ хоста можно считать подлинным. Если они не совпадают, это может свидетельствовать о потенциальной угрозе безопасности, например, атаке “человек посередине”.
Удаление неактуальной записи о хосте
Если вы убедились, что изменение отпечатка ключа хоста законно, то удалить неактуальную запись о хосте из клиентской системы вы можете с помощью команды:
ssh-keygen -R <IP_сервера>
где:
- <IP_сервера> – IP-адрес сервера, запись о котором нужно удалить из файла known_hosts.
Например:
ssh-keygen -R 203.0.113.14
Эта команда удалит запись о сервере с IP-адресом 203.0.113.14 из файла ~/.ssh/known_hosts.
Если вы не подключаетесь к другим хостам, удаление файла known_hosts целиком также поможет удалить запись о неактуальном отпечатке ключа хоста. Файл будет создан заново при следующем успешном подключении. Однако такой способ не рекомендуется.
После удаления неактуальной записи об отпечатке хоста или после удаления файла known_hosts, повторите попытку подключения — ошибка не должна появиться.