![从 known_hosts 中删除密钥](https://linux22.com/image/1213577/%E4%BB%8E%20known_hosts%20%E4%B8%AD%E5%88%A0%E9%99%A4%E5%AF%86%E9%92%A5.png)
过去几周,我创建了几个虚拟机。问题是.ssh/known_hosts
,中间人警告。发生这种情况是因为另一个指纹与虚拟机 IP 相关联。
然而,在.ssh/known_hosts
文件中,我没有找到与IP相关的记录,只有两个奇怪的、类似密钥的字符串和“ssh-rsa”。
有人知道如何从中删除旧密钥吗known_hosts
?
答案1
sed -i '6d' ~/.ssh/known_hosts
将修改文件 ~/.ssh/known_hosts:6 ,删除第 6 行。
在我看来,ssh-keygen -R
对于 openssh 高级用户来说,使用是更好的解决方案,而常规 Linux 管理员最好使用上述方法来保持他/她的 sed 技能新鲜。
答案2
有一个 ssh-keygen 开关 ( -R
) 用于此。
man ssh-keygen
内容如下:
-R
主机名
hostname
从文件中删除属于的所有密钥known_hosts
。此选项对于删除散列主机很有用(请参阅-H
上面的选项)。
答案3
最简单的解决方案是:
rm -f .ssh/known_hosts
ssh 将再次重新创建该文件,但您会丢失对其他主机的密钥检查!
或者,您可以使用:
ssh-keygen -R "hostname"
或者 ssh“中间人”消息应该指出 known_hosts 文件的哪一行有违规指纹。编辑文件,跳转到该行并删除它。
答案4
所有答案都很好,但对于真正的 SSH 专业人士,我们缺少如何使用(非标准)端口号删除 ssh 签名的信息。
简单的 SSH 主机签名删除命令:
ssh-keygen -R example.com
复杂的 ssh 密钥删除,例如您在非标准端口 222 上连接到 ssh:
ssh example.com -p 222
你会收到警告,要删除它,你需要使用方括号冒号端口号:
ssh-keygen -R [example.com]:222
请注意,可能存在同一主机的 IP 记录,因此您也需要删除该记录。
希望这对非标准配置用户有所帮助。