服务器通常为每种算法保存一个主机密钥(/etc/ssh/ssh_host_ed25519_key、…_ecdsa_key、…_rsa_key),使用哪一个由客户端 HostKeyAlgorithms 的顺序决定。首次连接时,OpenSSH 会显示 SHA-256 指纹并询问是否信任;此后如果主机密钥发生变化,就会显示 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 并中止连接(StrictHostKeyChecking 为默认值时)。
在不影响客户端的情况下轮换主机密钥:OpenSSH 的 UpdateHostKeys(较新的客户端默认启用)允许服务器在身份验证完成后公布自己的全部主机密钥,让客户端在旧密钥移除之前就记住新密钥。大规模服务器集群可以借助主机证书(known_hosts 中的 @cert-authority)或经 DNSSEC 签名的 SSHFP 记录(RFC 4255),完全避免“首次使用即信任”。
内置主机密钥的黄金镜像会让每台克隆出的服务器具有相同的身份;应在首次启动时重新生成密钥。HashKnownHosts 以哈希形式存储主机名,这样即使 known_hosts 文件被盗,也不会暴露你的服务器列表。