我在生产环境中使用 ssh-keyscan 自动允许指纹。是否好

我在生产环境中使用 ssh-keyscan 自动允许指纹。是否好

是否有任何选项可以撤销所提到的操作。它是否会导致任何安全漏洞?

答案1

安全概念是,对于您连接的每个新服务器,对服务器密钥指纹进行一次手动/带外验证,以确保您连接到您想要访问的实际服务器,并且您没有连接到错误的服务器或中间人或其他攻击者。

当指纹匹配时,您将服务器密钥添加到您的 known_hosts 中,并且只有当服务器突然不再提供该受信任密钥时,才会再次提示您。在这种情况下,要么是服务器密钥已更改,要么是存在某种不正当行为,但无论哪种情况,您都需要进行调查。


在实践中,尤其是在大型环境中,手动指纹验证通常不切实际。运行ssh-keyscan可以方便地填充known_hosts(一次),但假设当前没有MITM或其他犯规行为。当前状态将是可接受的基线,您将只能检测到未来的服务器密钥更改。

这会消除一些安全性,但风险是可以接受的。


要从意外信任的任何服务器密钥恢复,需要将其从 known_hosts 文件中删除。

您的选择是:

  • 通过彻底删除来删除所有受信任的服务器密钥˜/.ssh/known_hosts
  • 手动编辑˜/.ssh/known_hosts 并删除包含特定服务器条目的行。
    如果您通过不同的方式访问远程服务器,例如同时使用主机名和 IP 地址,则可以在 known_hosts 中为每个服务器设置服务器密钥
  • 有时主机名˜/.ssh/known_hosts是散列的(当 HashKnownHosts启用 ssh 指令时),您无法手动编辑˜/.ssh/known_hosts,并且应该使用ssh-keygen -R HOSTNAME删除该主机名的存储密钥。同样,主机名、hostname.example.com 和该主机的 ip 地址可以有不同的条目。

相关内容