修复 Linux 中的“警告:远程主机标识已更改”错误

今天,我尝试通过 SSH 连接到我的远程 Ubuntu 20.04 LTS 服务器并遇到此消息 – 警告:远程主机标识已更改!.

$ ssh [email protected]

样本输出:

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
@    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/sk/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/sk/.ssh/known_hosts:11
  remove with:
  ssh-keygen -f "/home/sk/.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 地址后身份(指纹)发生变化时,会显示上述警告消息。

修复 Linux 中的“警告:远程主机标识已更改”错误

要解决此问题,只需使用以下命令删除本地系统上 IP 地址的缓存密钥:

$ ssh-keygen -R 192.168.225.52

样本输出:

# Host 192.168.225.52 found: line 11
/home/sk/.ssh/known_hosts updated.
Original contents retained as /home/sk/.ssh/known_hosts.old

修复 Linux 中的“警告:远程主机标识已更改”错误

您还可以使用显式指定 known_hosts 文件的路径 -F 像下面这样的标志。

$ ssh-keygen -f "/home/sk/.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 [email protected]

键入“yes”并按 ENTER 以在本地系统中添加远程主机密钥:

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.
[email protected]'s password:

现在您可以通过 SSH 访问远程系统。