是否有任何选项可以撤销所提到的操作。它是否会导致任何安全漏洞?
答案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 地址可以有不同的条目。