透露您的SSH known_hosts文件是否存在安全风险?

下周我将在一场会议上演讲,内容是关于我开发的一些软件工具。在演讲过程中,我的笔记本电脑将通过投影仪显示在屏幕上。这次演讲将被录像并发布到YouTube上。如果在演讲过程中有必要打开和编辑我的~/.ssh/known_hosts文件,我是否应该在此期间断开投影仪连接?透露我的known_hosts文件是否存在安全风险?

7为什么不在演示期间将您实际的known_hosts文件替换为一个虚假的呢? - Sven
1...或者如果您一开始没有检查主机指纹,可以使用类似 ssh -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no user@host 的命令来绕过指纹验证,并避免与已知主机进行检查。 - Lekensteyn
@Sven,known_hosts文件本身并不是演示的一部分,只是我演示的软件偶尔需要我编辑我的known_hosts文件。观众不需要看到这个过程(所以我会像其他评论者建议的那样进行盲目编辑),但是编辑一个虚假的known_hosts文件无法达到我的目标。 - Matt Korostoff
2个回答

known_hosts文件包含您过去连接的主机的受信任的公钥。这些公钥可以通过尝试连接到这些主机来获取。因此,从本质上讲,它不会带来安全风险。
但是:它包含了您连接过的主机的历史记录。这些信息可能被潜在攻击者用来对组织基础设施进行侦察。同时,它还告诉潜在攻击者您可能可以访问某些主机,并且如果他们窃取了您的笔记本电脑,他们也能够访问这些主机。
编辑:为了避免显示您的known_hosts文件,我建议您使用ssh-keygen工具。例如,使用“ssh-keygen -R ssh1.example.org”可以从您的known_hosts中删除对ssh1.example.org的受信任密钥。

ssh-keygen似乎无法正常工作,除非您知道端口号。对于某些用途来说,这使得使用起来变得困难。 - AdamC

这并没有什么特别危险的地方。然而,您可能不希望透露这些身份信息。有时候主机的存在会为那些倾向于攻击的人揭示出好的攻击途径。您可以使用HashKnownHosts,或者您可以在不查看文件的情况下进行编辑。


盲目编辑:
sed -i 25d .ssh/known_hosts会删除第25行,不会在屏幕上显示任何内容。

HashKnownHosts
表示当将主机名和地址添加到~/.ssh/known_hosts时,ssh(1)应该对其进行哈希处理。这些哈希后的名称可以被ssh(1)和sshd(8)正常使用,但如果文件的内容被公开,它们不会透露身份信息。默认设置为“no”。请注意,现有的已知主机文件中的名称和地址不会自动转换,但可以使用ssh-keygen(1)手动进行哈希处理。


5不需要手动计算行号并使用sed删除,你也可以使用ssh-keygen -R example.com来实现相同的效果。 - Lekensteyn
5你还可以使用 ssh-keygen -H -f ~/.ssh/known_hosts 命令来对文件中的所有名称/地址进行哈希处理。 - Barmar