Сегодня я попытался подключиться по SSH к моему удаленному серверу Ubuntu 20.04 LTS и обнаружил следующее сообщение:
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
$ ssh itsecforu@192.168.225.52
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 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 a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:K/jEKNQCYYOilJxOZc7qAWlu4xu0nW+MD09DfJL7+gc. Please contact your system administrator. Add correct host key in /home/itsec/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/itsec/.ssh/known_hosts:11 remove with: ssh-keygen -f "/home/itsec/.ssh/known_hosts" -R "192.168.225.52" ECDSA host key for 192.168.225.52 has changed and you have requested strict checking. Host key verification failed.
На самом деле это не сообщение об ошибке.
Это просто уведомление о безопасности, которое указывает, что ключ хоста ECDSA для данной удаленной системы изменился с момента вашего последнего подключения.
Как вы, возможно, уже знаете, когда мы впервые обращаемся к удаленной системе из локальной системы через SSH, отпечаток ключа ECDSA, отправленный этим удаленным хостом, кэшируется и сохраняется в файле $ HOME/.ssh/known_hosts в нашей локальной системе.
Когда идентификатор (отпечаток) изменился после переустановки удаленной системы или назначения одного и того же IP-адреса для нескольких удаленных систем, появляется указанное выше предупреждение.
Как исправить ошибку
Чтобы устранить эту проблему, просто удалите кэшированный ключ для IP-адреса в локальной системе с помощью команды:
$ ssh-keygen -R 192.168.225.52
Пример вывода:
# Host 192.168.225.52 found: line 11 /home/itsec/.ssh/known_hosts updated. Original contents retained as /home/itsec/.ssh/known_hosts.old
Вы также можете явно указать путь к файлу known_hosts с флагом -f, как показано ниже.
$ ssh-keygen -f "/home/itsec/.ssh/known_hosts" -R "192.168.225.52"
Приведенная выше команда удалит все ключи, принадлежащие удаленному хосту, из файла known_hosts локальной системы.
А также старое содержимое файла known_hosts будет сохранено в файле с именем «known_hosts.old».
Если вы используете другой порт SSH, вам нужно явно указать его, как показано ниже:
$ ssh-keygen -R 192.168.225.52:1234
Здесь 1234 – номер порта SSH.
Замените его вашим фактическим номером порта SSH.
После удаления ключей попробуйте снова подключиться к SSH в удаленной системе с помощью команды:
$ ssh itsecforu@192.168.225.52
The authenticity of host '192.168.225.52 (192.168.225.52)' can't be established. ECDSA key fingerprint is SHA256:K/jEKNQCYYOilJxOZc7qAWlu4xu0nW+MD09DfJL7+gc. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.225.52' (ECDSA) to the list of known hosts. itsecforu@192.168.225.52's password: