默认情况下,Debian 和 Ubuntu(至少)/etc/ssh/ssh_known_hosts
对其他人设置了无读取权限。这背后的逻辑是什么?我想不出有什么安全风险o+r
,另一方面,让它公开可读对于管理员分发的文件很有用。
答案1
我认为阻止访问该文件的目的是为了防止入侵者获得系统可以访问的主机列表。类似的逻辑也适用于HashKnownHosts
最近默认启用的选项。您通常不希望您的系统提供入侵者控制网络上所有内容所需的一切。
如果您仅将散列条目添加到您的中,/etc/ssh/ssh_known_hosts
我认为这实际上不是什么大问题,因为反转散列是不可能的。
答案2
如果仍然发生这种情况,那么这似乎是一个错误。ssh 在读取此文件时使用用户权限,因此如果它不是所有人可读的,那么它根本没有效果。
我刚刚测试了id。如果我将/etc/ssh/ssh_known_hosts的权限设置为600,则ssh显示“无法确定主机...的真实性。”
如果我将其设置为 644,那么我就可以在没有提示的情况下登录到远程服务器。
sshd手册页明确指出“该文件只能由 root /所有者写入,并且应可供所有人读取。”
答案3
ssh 密钥不应无正当理由共享。/etc/ssh/* 是适用于的配置选项全部用户。ssh_known_hosts 文件是一种为登录到该框的所有用户指定已知主机列表的方法。我相信您还可以向 /home/*/.ssh/known_hosts 添加条目,以将“已知”主机应用于特定用户。所有者拥有读取权限应该没有问题……事实上……所有用户都应该对该文件拥有读取权限。问题在于您何时应用写入权限。
该文件用于识别远程服务器的指纹...因此,当您通过 ssh 进入超安全服务器时...您实际上是通过 ssh 进入您的服务器...而不是通过扮演中间人的黑客所拥有的其他服务器。