Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 594

known_hosts 文件

known_hosts 文件 是什么?

known_hosts 文件OpenSSH 客户端文件(~/.ssh/known_hosts),用于固定服务器公钥,以便 SSH 在主机密钥变化时识别潜在的中间人攻击。


known_hosts 文件为 SSH 服务器身份实现了首次使用即信任(TOFU)模型。首次连接到某主机时,用户需要验证并接受其公钥指纹;随后 OpenSSH 将该主机及其密钥记录到 known_hosts(此外还有系统级的 /etc/ssh/ssh_known_hosts)。再次连接时,OpenSSH 将所获密钥与记录比对,如果不同则拒绝连接并提示可能的 MITM。默认启用主机名哈希(HashKnownHosts yes),即便文件泄露也不会暴露访问过的主机列表。更强的方案包括由 CA 签名的主机证书(TrustedUserCAKeys / @cert-authority)、由 DNSSEC 签署的 DNS SSHFP 记录(RFC 4255),以及在生产访问中通过 StrictHostKeyChecking=yes 拒绝任何交互式确认。

示例

  1. 01

    当 known_hosts 中保存的主机密钥不再匹配时,OpenSSH 提示 'REMOTE HOST IDENTIFICATION HAS CHANGED!'。

  2. 02

    使用带 @cert-authority 的 SSH 证书,使数百台服务器无需逐一出现在 known_hosts 中。

常见问题

known_hosts 文件 是什么?

OpenSSH 客户端文件(~/.ssh/known_hosts),用于固定服务器公钥,以便 SSH 在主机密钥变化时识别潜在的中间人攻击。 它属于网络安全的 网络安全 分类。

known_hosts 文件 是什么意思?

OpenSSH 客户端文件(~/.ssh/known_hosts),用于固定服务器公钥,以便 SSH 在主机密钥变化时识别潜在的中间人攻击。

known_hosts 文件 是如何工作的?

known_hosts 文件为 SSH 服务器身份实现了首次使用即信任(TOFU)模型。首次连接到某主机时,用户需要验证并接受其公钥指纹;随后 OpenSSH 将该主机及其密钥记录到 known_hosts(此外还有系统级的 /etc/ssh/ssh_known_hosts)。再次连接时,OpenSSH 将所获密钥与记录比对,如果不同则拒绝连接并提示可能的 MITM。默认启用主机名哈希(HashKnownHosts yes),即便文件泄露也不会暴露访问过的主机列表。更强的方案包括由 CA 签名的主机证书(TrustedUserCAKeys / @cert-authority)、由 DNSSEC 签署的 DNS SSHFP 记录(RFC 4255),以及在生产访问中通过 StrictHostKeyChecking=yes 拒绝任何交互式确认。

如何防御 known_hosts 文件?

针对 known_hosts 文件 的防御通常结合技术控制与运营实践,详见上方完整定义。

known_hosts 文件 还有哪些其他名称?

常见的别称包括: ~/.ssh/known_hosts, SSH 主机 TOFU。

相关术语