从 known_hosts 中删除密钥

从 known_hosts 中删除密钥

过去几周,我创建了几个虚拟机。问题是.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 记录,因此您也需要删除该记录。

希望这对非标准配置用户有所帮助。

相关内容