我在 Virtual Box 中运行带有一堆虚拟服务器的 Ubuntu 桌面来测试东西等。过去我也一直在连接到其他类型的远程 VPS Linux 机器。目前我的.ssh/known_hosts
文件中有一大堆键,其中大部分不再使用。
我想清理我的.ssh/known_hosts
文件,但我怎么知道哪个密钥属于哪个主机?即我怎么知道我可以安全地移除哪些钥匙以及我应该留下哪些钥匙?
我在 Virtual Box 中运行带有一堆虚拟服务器的 Ubuntu 桌面来测试东西等。过去我也一直在连接到其他类型的远程 VPS Linux 机器。目前我的.ssh/known_hosts
文件中有一大堆键,其中大部分不再使用。
我想清理我的.ssh/known_hosts
文件,但我怎么知道哪个密钥属于哪个主机?即我怎么知道我可以安全地移除哪些钥匙以及我应该留下哪些钥匙?
要找出 known_hosts 中的已知主机名对应的条目:
要从 known_hosts 中删除单个条目:
有困难...
默认情况下,Ubuntu 对 known_hosts 文件的主机名进行哈希处理(这不是默认的 openssh 行为),以使读取文件的任何人都难以知道您访问的系统。
如果您真的想清理文件,最简单的选择可能只是删除它并检查您知道的服务器的密钥,但实际上我只是不理会 known_hosts 。
您可以通过注释掉 /etc/ssh/ssh_config 中的选项来阻止新主机条目被散列
如果您有所有主机的列表,则可以执行以下操作
这将使用基于扫描主机的新生成的文件覆盖您的 .ssh/known_hosts 文件。
并且按照对方的建议去做;HashKnownHosts 比这里的帮助更烦人。
我的known_hosts文件中有 300 多个陈旧的条目。不确定它是否适用于所有系统(甚至大多数系统),但这是我的 Q&D 脚本。您可能需要调整匹配的字符串或位置。