CH-J Server Manager通过 SSH 管理服务器
菜单
全部指南与文章 →

SSH 主机密钥已更改:警告含义及处理方法

查明服务器提供新主机密钥的原因,通过其他渠道核实,并安全替换已保存的记录。

警告说明了什么

服务器通过主机密钥证明其身份。如果密钥与客户端之前保存的密钥不同,OpenSSH 会显示 REMOTE HOST IDENTIFICATION HAS CHANGED 并拒绝连接。客户端无法区分无害的变更与攻击,因此在核实之前,应将该警告视为尚未解决的问题。

常见原因

常见原因包括服务器重装、虚拟机从镜像恢复或克隆、地址现已分配给另一台机器,以及负载均衡器将你分配到不同节点。攻击者拦截连接也会触发同样的警告。如果你并未预期会有变更,请停止操作,不要输入密码。

比较指纹

通过不依赖此 SSH 连接的渠道在服务器上读取真实指纹,例如服务商控制台或虚拟机监控程序控制台。ssh-keyscan 命令只显示网络向你提供的内容,因此本身不能证明任何事情。它仅适合用于与控制台获取的值进行比较。

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

ssh-keyscan -t ed25519 server.example | ssh-keygen -lf -

替换旧记录

只有指纹一致后,才能删除旧记录并重新连接。非标准端口有独立记录,使用方括号格式。ssh-keygen 会将原文件保留为 known_hosts.old。不要关闭 StrictHostKeyChecking,也不要删除整个 known_hosts 文件,否则会移除对所有服务器的保护。

ssh-keygen -R server.example
ssh-keygen -R '[server.example]:2222'
ssh user@server.example

避免重装后的警告

如果计划重装服务器并希望保留其身份,请安全备份 /etc/ssh 中的主机密钥,并以相同的所有者和权限恢复。对克隆则应反过来处理:同一镜像创建的每台机器都需要自己的主机密钥,否则多台服务器会共用一个身份。

CH-J Server Manager 中的主机密钥

应用将主机密钥的 SHA-256 指纹存储在自身的加密保险库中,与 OpenSSH 的 known_hosts 文件分开保存。发生变化时,它会阻止连接,并显示已知指纹和新指纹。只有在你确认后才会替换记录,取消则不会更改任何内容。在 Alpha 0.1.1 中,检查也覆盖每台跳板主机,密钥变化时正在进行的传输会停止。应用无法代你核实新指纹,因此通过其他渠道验证仍需由你完成。

详细文档

OpenSSH: ssh →

OpenSSH: ssh-keygen →

生物识别解锁与安全 →