我们最近刚刚在两台服务器之间建立了无密码连接。我们存在与known_hosts 文件内容相关的安全问题。基本上我们担心的是,如果有人能够访问我们的系统,并且他们能够查看known_hosts 文件,他们将获得链接到此框的其余服务器的IP 地址信息。
我正在寻找一种方法来禁止将 IP 地址输入到known_hosts 文件中。
下面这篇文章中有一个解决方案,可以绕过检查外部服务器是否是已知主机:
以下语句将绕过known_hosts 检查,并使您登录到外部服务器,而不会提示将该服务器信息输入到现有/ssh/known_hosts
文件中。我引用了文章中的一段话:
“您可以通过将密钥发送到空的known_hosts 文件来跳过主机密钥检查:
$ ssh -o “UserKnownHostsFile=/dev/null” -o “StrictHostKeyChecking=no” user@host”
当您实现此操作时,除了抑制known_hosts检查过程的提示之外,您要连接的服务器的IP地址是否仍然存储在现有/ssh/known_hosts
文件中,或者不存储在任何地方? (即“UserKnownHostsFile=/dev/null”)
是否有人熟悉这种类型的命令?我试图确认它是否可以防止存储 IP 地址。从我对 /dev/null/ 的了解来看,情况确实如此,但我只有 80% 的把握。有没有人可以证实这一点。您实际上不必了解 SSH 协议,任何 Linux 专家都可能知道这一点。
当您将 UserKnownHostsFile 重定向到 /dev/null 时(如上所示),实际上会阻止您的 IP 地址存储在 .ssh/known_hosts 文件中。谢谢!
答案1
配置ssh
选项HashKnownHosts
导致 ssh 以散列形式存储主机名和 IP 地址known_hosts
,而不是原始名称。散列形式是一种单向转换,不允许恢复原始主机名或 IP 地址。这允许您按预期使用known_hosts机制,而无需在文件中存储原始主机名或地址。
散列的known_hosts条目如下所示:
|1|G9jVmIB3FBUJ70EpHtCM8PAJhMo=|AlMl5Apfpp3CR+Iy2gZTd+7y6bo= ssh-rsa AAAAB3Nz...
该ssh-keygen
程序可用于帮助管理这样的文件:
ssh-keygen -H
会将现有的known_hosts 文件转换为散列形式。ssh-keygen -F
将在known_hosts 文件中搜索特定主机名。ssh-keygen -R
可以从文件中删除单个条目。