为什么我应该在 ssh_config 中使用“HashKnownHosts yes”?

为什么我应该在 ssh_config 中使用“HashKnownHosts yes”?

我这里有一些服务器有“是”,还有一些没有(我今天才发现这个选项)。

HashKnownHosts 的优点在于,我可以更轻松地维护 known_hosts 文件。

使用 HashKnownHosts 的实际优势是什么?

答案1

known_hosts 文件存在一个小的安全风险。它包含您连接的所有服务器的便捷列表。获得您的密码或未加密私钥的攻击者只需遍历列表,直到您的凭据被接受。哈希可以解决这个问题,或者至少可以模糊列表。

答案2

有了明文known_hosts,攻击者很容易知道你连接到了哪些服务器。文章麻省理工学院论文关于潜在的 ssh 蠕虫利用可读的known_hosts。当然,通常还有其他更麻烦的方法来确定您每天的 ssh 登录信息,例如攻击者可以使用的 shell 历史记录。

known_hosts请注意,您仍然可以使用实用程序处理散列ssh-keygen

ssh-keygen -F myhost         # shows myhosts's line in the known_hosts file
ssh-keygen -l -F myhost      # additionally shows myhost's fingerprint
ssh-keygen -R myhost         # remove myhost's line from known_hosts

这个命令,尤其是最后一个命令,对于 99% 的用户真正需要访问 的情况来说应该足够了known_hosts。当然,你将失去 ssh host tab 补全功能。

另请注意,命令行选项ssh-keygen区分大小写

还有一个相关问题在 unix.SE。

相关内容