用心打造
VPS知识分享网站

SSH提示REMOTE HOST IDENTIFICATION HAS CHANGED怎么办?

连接VPS时突然看到 REMOTE HOST IDENTIFICATION HAS CHANGED,不少人的第一反应是删除 known_hosts 里的记录。这样确实可能恢复连接,但也可能绕过SSH专门用来提醒中间人攻击或服务器身份异常的安全检查。

这个提示在重装系统、更换IP对应实例、重新生成主机密钥后很常见。正确做法不是看到报错就删,而是先确认服务器身份确实发生了预期变化。本文把核验和处理步骤完整讲清楚。

SSH主机密钥变化与服务器身份核验示意图

一、这个警告为什么会出现

SSH第一次连接某台主机时,会把服务器公钥指纹保存到本地 known_hosts 文件。以后再次连接,客户端会比较当前主机密钥与历史记录。

同一个IP或域名返回了不同的主机密钥,SSH就会阻止连接并显示警告。这既可能是正常变更,也可能说明流量被劫持、DNS指向错误或你连到了另一台机器。

因此,主机密钥变化是身份核验问题,不是普通的登录密码错误

二、哪些情况属于正常变化

重装VPS系统、恢复到包含不同SSH密钥的镜像、重新生成 /etc/ssh/ssh_host_*、更换服务器但继续使用旧IP或域名,都会让指纹改变。

云服务商回收并重新分配IP后,也可能出现相同提示。即使你没有主动改服务器,DNS解析被改动、负载均衡后端变化或本地 hosts 文件配置错误,也会让连接目标发生变化。

正常与否不能只靠报错文本判断,关键是你能否通过可信渠道确认新指纹。

三、先核对自己连接的目标

先确认域名当前解析和SSH命令中的主机、端口:

getent hosts example.com
ssh -v user@example.com

再登录云服务商控制台,核对实例公网IP、近期重装记录和安全事件。若还能通过VNC或网页控制台进入服务器,可在服务器本机查看主机公钥指纹:

sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
sudo ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

把这里的指纹与SSH客户端警告里显示的新指纹逐项对比。控制台、本地服务器和工单回复属于比未知网络连接更可信的核验渠道。

四、确认变化正常后再删除旧记录

OpenSSH可以按主机名或IP移除旧条目:

ssh-keygen -R 服务器IP
ssh-keygen -R example.com

使用非默认端口时,known_hosts 可能以 [主机]:端口 形式保存:

ssh-keygen -R '[example.com]:2222'

再次连接时,认真核对提示的新指纹,确认后再接受。不要为了省事直接删除整个 ~/.ssh/known_hosts,那会同时丢失其他服务器的历史身份记录。

五、Windows客户端应该怎么处理

Windows 10、Windows 11和新版PowerShell自带的OpenSSH,同样可以使用 ssh-keygen -R。用户文件通常位于:

C:\Users\你的用户名\.ssh\known_hosts

PuTTY、Xshell、FinalShell等客户端可能把主机密钥存放在自己的配置或注册表中,处理位置不同。删除前应先记下旧指纹并核对新指纹,不要只在弹窗中点击接受并忽略原因。

六、哪些做法不建议使用

下面这些操作可能让连接暂时成功,却会降低身份验证价值:

  • 长期设置 StrictHostKeyChecking=no,让客户端自动接受未知或变化的密钥。
  • 直接清空整个known_hosts文件,没有保留其他服务器的可信记录。
  • 仅用 ssh-keyscan 获取新密钥就认定安全,却没有通过控制台等独立渠道核验。
  • 明明没有重装、换机或改DNS,仍忽略突发的主机密钥变化。

ssh-keyscan 适合采集公钥,不会自动证明采集过程中没有遭到劫持。安全性来自独立比对,而不是命令本身。

七、没有进行任何变更却突然报错怎么办

先停止连接,不要输入密码或私钥口令。随后检查域名解析、路由、代理、本地网络、云平台通知和实例登录记录。团队环境还要确认是否有人重装系统或替换了节点。

若无法从控制台验证新指纹,向服务商提交工单,请其确认实例与主机密钥变化。重要服务器可以在部署时把SSH指纹记录到密码管理器或资产表中,后续核验会更直接。

八、如何减少以后再次踩坑

为每台服务器保留实例ID、IP、域名、SSH端口和主机指纹,并记录重装或密钥轮换时间。域名切换服务器时,提前通知维护人员更新本地记录。

长期项目还应限制SSH来源IP、优先使用密钥登录、关闭不必要的密码认证,并为控制台账号开启多因素认证。主机指纹解决的是服务器身份问题,和登录凭据安全应一起维护。

常见问题

问:这个提示一定代表服务器被攻击了吗?
答:不一定,重装系统和更换实例也会触发,但必须核验后再继续连接。

问:能直接删除known_hosts吗?
答:确认新指纹可信后,只删除对应主机条目,不建议清空整个文件。

问:ssh-keygen -R会删除服务器上的密钥吗?
答:不会,它只删除当前客户端本地保存的对应主机记录。

问:ssh-keyscan获取的指纹可以直接信任吗?
答:不能单独作为可信证明,应与控制台或其他独立渠道的指纹比对。

问:换了SSH端口为什么旧记录还在?
答:非默认端口常以“[主机]:端口”单独保存,需要按这个格式删除。

温馨提示

SSH主机密钥警告的价值就在于阻止你悄悄连到错误的服务器。确认IP和新指纹之后再更新记录,只多花几分钟,却能避免把密码或连接交给未知主机。

赞(0)
未经允许不得转载;国外VPS测评网 » SSH提示REMOTE HOST IDENTIFICATION HAS CHANGED怎么办?
分享到