### [VPS提示REMOTE HOST IDENTIFICATION HAS CHANGED怎么办?先核对指纹再删known_hosts](https://www.jiyueip.com/article/13317) **Published:** 2026-07-29T17:48:14 **Author:** 斑斓助理 **Excerpt:** SSH连接VPS出现REMOTE HOST IDENTIFICATION HAS CHANGED,表示服务器当前主机密钥与本地known_hosts记录不一致。先确认重装、IP复用、DNS或攻击风险,再安全更新记录。 SSH连接VPS时出现`WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!`,表示服务器当前提供的主机密钥,与本地`known_hosts`中保存的记录不一致。它可能由VPS重装、SSH主机密钥重建、域名解析变化或公网IP被重新分配引起,也可能意味着连接被劫持或目标服务器被冒充。 **不要看到报错就删除整份known\_hosts,也不要通过关闭StrictHostKeyChecking强行登录。**先确认服务器是否发生过预期变更,再从服务商控制台或另一条可信管理路径读取新指纹,核对一致后才更新本地记录。 ## 这个警告保护的是什么 SSH主机密钥用于证明远端服务器身份。第一次连接时,客户端会显示服务器公钥指纹,并在用户确认后写入`~/.ssh/known_hosts`。以后再连接同一主机,SSH会对比当前密钥与历史记录。 OpenSSH在主机标识改变时发出警告,并限制不安全的继续连接,是为了降低服务器伪装、DNS欺骗或中间人攻击绕过加密保护的风险。这个检查与用户登录用的密码、私钥不是同一个概念:用户密钥证明“你是谁”,主机密钥证明“服务器是谁”。 ## 先判断变更是否符合预期 | 近期事件 | 主机密钥变化是否可能正常 | 仍需检查什么 | | --- | --- | --- | | 刚重装VPS系统 | 可能正常 | 控制台中的新指纹、重装时间和目标IP | | 恢复整机快照或更换实例 | 可能变化,也可能恢复旧密钥 | 快照来源、实例标识和密钥生成时间 | | 公网IP释放后重新购买 | 很可能对应另一台主机 | 新实例归属和当前控制台地址 | | 域名修改了A或AAAA记录 | 可能连到新服务器 | DNS结果、IPv4/IPv6和变更记录 | | 没有任何维护或变更 | 不应直接忽略 | DNS劫持、路由异常、账号和服务器安全事件 | 如果警告发生在维护窗口之外,先停止输入密码、验证码和私钥口令。保存提示中的主机名、IP、密钥类型、旧新指纹和known\_hosts行号,作为后续核对线索。 ## 从可信路径读取服务器主机指纹 优先使用云服务商提供的VNC、串行控制台或网页控制台登录服务器。这条路径不依赖当前有疑问的SSH连接。然后读取各主机公钥指纹: ``` sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub sudo ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub sudo ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub ``` 服务器不一定同时启用这些算法,不存在的文件会报错。将实际存在且SSH正在使用的密钥指纹,与客户端警告或首次重连提示逐字符核对。不要仅通过同一条不可信网络上的聊天消息获取指纹,否则验证路径仍可能被同时影响。 ## 确认无误后,只删除目标主机的旧记录 先查找本地known\_hosts中的匹配项: ``` ssh-keygen -F server.example ssh-keygen -F 203.0.113.10 ``` 确认目标主机确实已经合法更换密钥后,再移除对应记录: ``` ssh-keygen -R server.example ssh-keygen -R 203.0.113.10 ``` 如果使用非默认端口,known\_hosts中的标识可能是`[server.example]:2222`: ``` ssh-keygen -R "[server.example]:2222" ``` `ssh-keygen -R`会针对指定主机更新known\_hosts,比删除整份文件更可控。执行前可备份该文件,避免影响其他服务器的身份记录。 ## 重新连接时,再核对一次新指纹 ``` ssh user@server.example ``` 客户端会把目标视为首次连接并显示新指纹。只有当它与可信控制台读取的结果一致时,才接受并写入新记录。如果不一致,应立即停止,继续检查DNS、代理、跳板机配置、`~/.ssh/config`中的HostName以及IPv4和IPv6是否指向不同服务器。 ## 为什么不应把StrictHostKeyChecking设为no `StrictHostKeyChecking`控制未知或已变更主机密钥的处理方式。将其关闭可能让自动化连接跳过关键身份确认,使错误的目标服务器更容易被接受。它不是修复主机密钥变化的工具,只是改变客户端面对风险时的行为。 自动化系统若需要非交互连接,应使用受控的known\_hosts分发、配置管理或主机证书,而不是把检查永久关闭。新主机与已变更主机也应区别处理:可以自动接受全新主机,不代表应该自动接受历史身份发生变化的主机。 ## 还可能是主机名、IP和跳板配置对不上 - 同一域名的A记录与AAAA记录指向不同实例,而两台服务器没有统一主机密钥; - SSH配置中的`Host`别名映射到了新的`HostName`; - 通过堡垒机、负载均衡或NAT连接时,后端实例发生轮换; - 多个服务器共用同一公网IP和不同端口,本地删除了错误的条目; - 服务商回收IP后分配给新客户,本地仍保存上一台VPS的密钥。 如果SSH连接还同时出现超时、断线或`Broken pipe`,应分开处理。主机密钥警告属于身份验证问题;已登录后的连接中断可按[VPS SSH断线与保活排查方法](https://www.jiyueip.com/article/13311)检查。 ## 服务器没有预期变更时怎样扩大排查 1. 暂停SSH登录,避免向未知目标提交认证信息; 2. 从云平台控制台确认实例ID、公网IP、开机时间和近期操作记录; 3. 检查域名A、AAAA记录以及本地DNS返回; 4. 从两条获准网络对比解析结果和SSH指纹; 5. 检查云账号登录、API操作、快照和重装记录是否异常; 6. 在控制台中查看sshd配置、主机密钥文件时间和系统日志; 7. 若怀疑账号或实例失陷,按事件响应流程隔离、保留证据并轮换凭据。 若维护操作还涉及系统镜像或CPU架构变化,可结合[VPS重装后程序架构与执行格式排查](https://www.jiyueip.com/article/13304)核对新环境,但不要把应用报错与主机身份警告混为同一原因。 ## 结论 `REMOTE HOST IDENTIFICATION HAS CHANGED`不是普通缓存提醒,而是SSH发现服务器身份与历史记录不一致。先判断重装、IP复用或DNS变更是否符合预期,通过可信控制台核对新指纹;确认无误后,仅移除目标主机的旧known\_hosts条目并重新接受新密钥。没有预期变更时,应把它当作潜在安全事件继续调查,而不是关闭检查强行连接。 **Tags:** Linux服务器, VPS, VPS监控, 云服务器, 企业网络合规 **Categories:** 行业洞察 ---