什么命令可以清除“远程主机标识已更改!”的错误

什么命令可以清除“远程主机标识已更改!”的错误
ssh  -p  yyyy  root@xxxxxxxxx
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Offending ECDSA key in /home/debian8/.ssh/known_hosts:28
  remove with: ssh-keygen -f "/home/user/.ssh/known_hosts" -R [xxxx]:yyyy
ECDSA host key for [xxxxxxxx]:yyyy has changed and you have requested strict checking.
Host key verification failed.

按照警告说的去做。

$ ssh-keygen -f "/home/user/.ssh/known_hosts" -R [xxxx]:yyyy

/home/user/.ssh/known_hosts is not a valid known_hosts file.    
Not replacing existing known_hosts file because of errors  

现在要执行哪个命令?

答案1

如果您确定只有密钥不正确并且选择将其删除。

替代解决方案列表:

1.- 执行推荐的命令。

要执行的命令就在错误消息中:

$ ssh-keygen -f "/home/user/.ssh/known_hosts" -R [xxxx]:yyyy

代替

  • xxxx通过与 ssh 连接使用的主机名或 IP
  • yyyy按端口号(如果非标准)

这将删除失败的密钥,然后重新连接以获取文件中的新密钥。

2.- 删除文件第28行

该错误还指出失败的行是:

Offending ECDSA key in /home/debian8/.ssh/known_hosts:28

编号为 28 的行可以使用文本编辑器或以下命令删除:

sed -i '28d' "/home/user/.ssh/known_hosts"

然后重新连接以获得正确的密钥。

3.- 移动文件。

将文件移动到备份(以供将来参考/使用/提取密钥)

mv /home/user/.ssh/known_hosts /home/user/.ssh/known_hosts_backup

让 ssh 在联系每个新主机时重建文件。

4.- 删除整个文件

如果以上均失败,请删除整个文件

rm "/home/user/.ssh/known_hosts"

它将针对您重新连接的每个新主机进行重建。

答案2

错误消息“/home/user/.ssh/known_hosts 不是有效的known_hosts 文件。”显示了问题。 ssh-keygen无法解析该文件,因为它已损坏 - 很可能是由于不正确的手动编辑。

如果您没有最近的备份,最简单的解决方案是将损坏的备份移到known_hosts一边并允许ssh生成新备份。您将必须重新接受您之前接受的任何远程主机的密钥。

$ mv /home/user/.ssh/known_hosts /home/user/.ssh/known_hosts.old

答案3

您使用主机名哈希吗?如果没有,您可以使用文本编辑器删除以/home/user/.ssh/known_hosts主机名开头的匹配行。它应该看起来有点像这样:

hostname-or-ip ecdsa-sha2-nistp256 AAAA...

(对于其他感兴趣的读者,ecdsa-位也可以是ssh-rsa,但在这里,它明确抱怨 ECDSA 密钥。)

答案4

SSH 警告意味着远程主机 xxxxxxxxx 的公钥已更改。这要么是由于远程主机的管理员更改了公钥,要么是由于入侵者在您的计算机和远程主机之间执行了中间人攻击。

如果您绝对确定是前一种情况,请.ssh/known_hosts通过编辑文件并删除以远程主机名开头的行来删除缓存的无效密钥。

相关内容