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 连接使用的主机名或 IPyyyy
按端口号(如果非标准)
这将删除失败的密钥,然后重新连接以获取文件中的新密钥。
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
通过编辑文件并删除以远程主机名开头的行来删除缓存的无效密钥。