Watch at Ease看见世界,读懂生活。

技术答疑 · 实用指南

SSH 出现“REMOTE HOST IDENTIFICATION HAS CHANGED”?删除旧密钥前先核验端点与指纹

不要为了消除警告就删除 known_hosts 或关闭校验。先确认 SSH 实际使用的主机名、地址、端口、跳板路径和信任文件,再通过独立可信渠道取得预期指纹;只有完全匹配后,才移除精确的旧记录。

原创编辑插图:用户将 SSH 警告中的指纹与独立可信服务器控制台进行比较。
原创概念插图:修改本地信任记录前,应通过独立可信渠道核验服务器指纹。 Watch at Ease

SSH 主机密钥警告属于身份校验失败,不是普通连接故障。修改本地信任记录前,必须证明连接到的是哪台服务器以及它应当提供哪把密钥。

把警告当作证据,而不是障碍

OpenSSH 会在 known_hosts 中记住服务器公钥。同一端点提供不同密钥时,客户端会拒绝连接,因为它无法判断服务器是重建、轮换、迁移,还是已被替换或拦截。清理前必须先核验身份。

保留完整警告:主机名、IP、端口、密钥类型、SHA256 指纹、文件与行号。VS Code Remote SSH、Git、rsync、IDE 或自动化封装可能使用不同配置、端口、跳板机或信任文件。

1. 确认 SSH 实际到达的端点

查看 `ssh -G host` 展开的配置,重点核对 `hostname`、`port`、`proxyjump`、`proxycommand`、`userknownhostsfile` 和 `globalknownhostsfile`。别名可能指向其他 DNS 名称、经堡垒机访问的私网地址或非标准端口。

通过日常使用的网络路径解析有效主机名,并与警告、资产清单、云控制台或管理员记录比较。VPN 分流 DNS、负载均衡、云地址复用和跳板机都可能把熟悉的别名带到另一台机器;路径无法解释就停止。

还要检查 `hostkeyalias`:若配置了它,主机密钥数据库会使用这个别名而非真实主机名。查询和删除应使用 SSH 实际报告的信任身份与文件,不能直接假设命令行昵称就是保存名。

2. 通过带外可信渠道取得预期指纹

使用与争议 SSH 连接无关的渠道,例如已认证的云控制台、串口/恢复控制台、配置管理记录或已核实管理员。管理员可在服务器控制台执行 `ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub`,并对其他启用的主机密钥执行对应命令。

必须取得算法和完整 SHA256 指纹。维护公告可以解释轮换,却不能替代指纹。`ssh-keyscan` 只会显示当前网络路径提供的内容,可用于观察,但不是独立身份证明。

3. 使用相同算法逐项比较

ED25519 只与 ED25519 比,RSA 与 RSA 比,ECDSA 与 ECDSA 比。服务器可能只轮换一种算法,另一个已存密钥仍有效,所以先确认客户端实际协商的主机密钥。

只有端点得到解释、所见指纹与独立取得的值完全一致时才能继续。若不同,联系管理员或供应商并保留旧记录;行号只是诊断信息,不是信任替换密钥的许可。

4. 定位精确的 known_hosts 记录

先备份警告指出的文件。运行 `ssh-keygen -F host`;非标准端口使用 `ssh-keygen -F '[host]:2222'`。若保存过解析后的 IP,也要单独查询。`-F` 支持散列主机名,无需删除无关行。

若客户端使用其他信任文件,在查询和删除命令中加入 `-f /path/to/file`。系统级文件可能需要管理员。存在跳板机时,先确定警告属于堡垒机还是最终目标。

5. 仅删除已经核验的旧端点

指纹匹配且原因合法后,运行 `ssh-keygen -R host`;非标准端口使用 `ssh-keygen -R '[host]:2222'`,必要时加入 `-f /path/to/file`。主机名和 IP 记录应分别核验、分别移除。

在新连接完成验证前保留备份。不要删除整个 `~/.ssh/known_hosts`、批量注释相似行或关闭严格校验;这些捷径会破坏证据并削弱其他服务器的安全。

`ssh-keygen -R` 会删除所选文件中该主机名或 [主机名]:端口的全部密钥,而不仅是一种发生变化的算法。先检查所有匹配记录;受管文件或其他算法的记录仍有效且无法判断时,交由管理员处理。

6. 只重连一次并再次确认

交互式重连,核对端点和算法,并在接受前再次将 SSH 显示的指纹与可信值比较。记录变化原因、可信来源、新旧指纹、时间和批准人。

如果密钥再次变化、同一名称后的不同后端出现无法解释的密钥,或只有某个客户端/网络持续报警,就停止调查。可能是 DNS 不一致、负载均衡未统一密钥、异常代理路径、不同信任文件或真实安全事件。

合法变化与升级条件

保留静态 IP 的虚拟机重建、已记录的密钥轮换、镜像恢复、设备替换或别名迁移都可能导致合法变化,但负责人仍须确认端点和指纹;熟悉的地址也可能已属于另一台机器。

若无人预期变化、管理员无法从可信控制台给出指纹、DNS/路由异常、指纹不符或密钥反复变化,应立即升级处理。身份未解决前不要输入凭据或执行敏感命令。

原创编辑插图:先梳理 SSH 主机名、地址、端口和跳板路径,再隔离一条旧信任记录。
原创概念插图:先确认真实端点与信任文件,确保只删除已核验的旧记录。 Watch at Ease