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

我有一些服务器是的,其他一些没有在这里(我今天才发现这个选项)。

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

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

known_hosts文件代表一个小的安全风险。 它包含您连接的所有服务器的便利列表。 获得密码或未encryption私钥的攻击者只需要遍历列表,直到您的凭证被接受。 散列可以解决这个问题,至less可以混淆列表。

使用明文known_hosts ,攻击者将很容易知道你连接的服务器。 有一篇关于使用可读的known_hosts的可能的ssh蠕虫的MIT文章 。 当然,通常还有其他更麻烦的方法来确定攻击者可以使用的每日sshlogin,例如shell历史logging。

请注意,您仍可以使用ssh-keygen实用程序使用散列化的known_hosts

 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主机标签的完成。

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

unix.SE上也有一个相关的问题 。