使用 SCP 命令传输文件时出现“主机密钥验证失败”错误

使用 SCP 命令传输文件时出现“主机密钥验证失败”错误

当我尝试使用 SCP 命令传输文件时出现此错误(删除了我的 IP 和 RSA 密钥):

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
------------------------(RSA key)
Please contact your system administrator.
Add correct host key in /home/users/myaccount/.ssh/known_hosts to get rid of this message.
Offending key in /home/users/myaccount/.ssh/known_hosts:4
RSA host key for 'my IP' has changed and you have requested strict checking.
Host key verification failed.
lost connection

我正在使用新安装的 Ubuntu 12.04,并且可以使用 ssh 连接到该服务器。有什么帮助吗?

答案1

如果连接到的计算机的 /etc/ssh 中的主机密钥已发生更改(如果该计算机在升级时未复制其旧主机密钥),则很容易发生这种情况。当您使用 ssh 重新连接到远程计算机时,此处的主机密钥可以证明您正在与第一次访问时连接的同一台计算机通信。

如果远程计算机在您的控制范围内,您可能知道它是否已更新且主机密钥未被复制。如果是这样,并且系统位于您的 LAN 上,您可以非常安全地忽略或绕过此错误消息。您可能确切地知道它的 IP 地址,并且知道它上面没有特洛伊木马设备。

如果计算机不在您的控制范围内,但您确定它已升级,则避免此错误消息也是合理的。(如果远程主机发布其 ssh 主机密钥的哈希值,您可以检查这些哈希值以确保更安全,或者您可以调用服务器的管理来获取主机密钥指纹)。

如果计算机在您的控制范围内,您应该将旧主机密钥从 /etc/ssh 复制到新系统,作为升级过程的一部分。(注意:此目录中有密钥文件和配置文件。)

一旦您知道要忽略这种情况,至少有两种方法可以解决这个问题。

  • 在 SSH 命令中传递 StrictHostKeyChecking 如(示例):

ssh -o 'StrictHostKeyChecking no' user@host

每次你都必须这么做。或者...

  • 删除有问题的 ssh 密钥(从您的答案中获取的真实示例):

sed -i '4d' /home/users/myaccount/.ssh/known_hosts

这是更持久的解决方案。您不会看到上述消息,而是可以选择接受来自服务器的新主机密钥,就像您第一次连接到服务器时所做的那样。尽可能验证您是否连接到正确的远程计算机,而无需通过中介,然后接受新的主机密钥。

答案2

您必须从/home/users/myaccount/.ssh/known_hosts文件中删除第 4 个 ssh 密钥。

答案3

看来您已将 ssh 文件夹从旧系统复制到了新系统。

打开终端并输入:

rm /home/USERNAME/.ssh/known_hosts

这将删除所有“旧”密钥。

相关内容