SSH重复提示添加已信任主机至已知主机列表问题排查
解决SSH连接熟悉域名却触发首次连接提示的问题
嘿,这个场景我太熟了!之前团队里也有人碰到过一模一样的情况,咱们来捋清楚问题根源和解决办法:
问题拆解
你同事遇到的核心现象:
- 用之前一直正常的域名SSH连接服务器,却弹出「Are you sure you want to continue connecting (yes/no/[fingerprint])?」的首次连接提示
- 查看
~/.ssh/known_hosts,发现对应服务器的记录有3条,前两条哈希值关联服务器IP和域名,第三条哈希完全不匹配
第三条异常记录的推测原因
大概率是以下两种情况之一:
- 域名曾被临时解析到其他服务器:比如某次连接时,域名DNS缓存异常、临时切换过解析指向,导致SSH客户端把陌生服务器的公钥当成了这个域名的记录存了进去,这条不匹配的哈希就是这么来的
- 服务器SSH公钥曾被重新生成:如果服务器重装过SSH服务、更换过主机密钥文件(默认路径
/etc/ssh/ssh_host_rsa_key.pub这类),旧的公钥记录还在known_hosts里,而新的公钥被客户端当成新主机记录添加,导致多条记录冲突,客户端无法匹配,就会触发首次连接的提示
解决步骤
1. 确认异常记录并删除
先把known_hosts里的异常记录清掉,步骤如下:
- 先运行命令定位对应域名/IP的所有记录:
这个命令会列出known_hosts里所有和该域名匹配的哈希记录ssh-keygen -F 你的服务器域名 - 删除所有相关记录:
这会自动移除known_hosts里对应该域名的所有条目ssh-keygen -R 你的服务器域名
2. 重新验证并添加正确记录
删除后重新连接服务器:
ssh 你的用户名@服务器域名
这时候会显示服务器当前的公钥指纹,你可以和服务器管理员确认指纹是否正确(比如让管理员在服务器上运行ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub获取指纹),确认无误后输入yes添加到known_hosts,之后连接就正常了。
3. 额外预防措施
- 定期清理known_hosts里的过期记录,避免积累过多无效条目
- 如果服务器公钥需要更换,提前通知所有连接的用户,避免大家误以为是中间人攻击
内容的提问来源于stack exchange,提问作者Mitocariu Emilian
相关产品推荐
相关产品推荐

