You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的所有记录:
    ssh-keygen -F 你的服务器域名
    
    这个命令会列出known_hosts里所有和该域名匹配的哈希记录
  • 删除所有相关记录:
    ssh-keygen -R 你的服务器域名
    
    这会自动移除known_hosts里对应该域名的所有条目

2. 重新验证并添加正确记录

删除后重新连接服务器:

ssh 你的用户名@服务器域名

这时候会显示服务器当前的公钥指纹,你可以和服务器管理员确认指纹是否正确(比如让管理员在服务器上运行ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub获取指纹),确认无误后输入yes添加到known_hosts,之后连接就正常了。

3. 额外预防措施

  • 定期清理known_hosts里的过期记录,避免积累过多无效条目
  • 如果服务器公钥需要更换,提前通知所有连接的用户,避免大家误以为是中间人攻击

内容的提问来源于stack exchange,提问作者Mitocariu Emilian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:27:15