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

scr*_*apy 5 ssh

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.
Run Code Online (Sandbox Code Playgroud)

按照警告说的去做。

$ 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  
Run Code Online (Sandbox Code Playgroud)

现在要执行哪个命令?

小智 6

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

替代解决方案列表:

1.- 执行推荐的命令。

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

$ ssh-keygen -f "/home/user/.ssh/known_hosts" -R [xxxx]:yyyy
Run Code Online (Sandbox Code Playgroud)

代替

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

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

2.- 删除文件第28行

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

Offending ECDSA key in /home/debian8/.ssh/known_hosts:28
Run Code Online (Sandbox Code Playgroud)

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

sed -i '28d' "/home/user/.ssh/known_hosts"
Run Code Online (Sandbox Code Playgroud)

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

3.- 移动文件。

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

mv /home/user/.ssh/known_hosts /home/user/.ssh/known_hosts_backup
Run Code Online (Sandbox Code Playgroud)

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

4.- 删除整个文件

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

rm "/home/user/.ssh/known_hosts"
Run Code Online (Sandbox Code Playgroud)

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