跳到主要内容
ecdsa.com
OpenSSH clientSSH

错误信息

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

也可能输出为

  • IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
  • Offending ED25519 key in /root/.ssh/known_hosts:1

以一段被 `@` 字符行包围的文字块输出,后面依次是新密钥的指纹、有问题的 known_hosts 行,以及“Host key verification failed.”。

OpenSSH client — host key differs from the one recorded in known_hosts

含义

服务器出示的主机密钥与 `known_hosts` 中为这个主机名或地址记录的不同。ssh 无法区分合法的变更(重装、同一 IP 后面换了新机器)和有人拦截连接,因此在批处理模式下拒绝继续,在其他情况下则禁用密码和键盘交互式身份验证。“Offending … key in …:N”这一行告诉你 known_hosts 的哪一行保存着旧密钥。

原因

修复方法

  1. 1.

    先验证新密钥,再替换条目

    把新指纹与可信来源提供的指纹比对;确认之后,再用 `ssh-keygen -R` 删除旧的行(按名称和按 IP 各删一次)。

    bash
    # 1. Get the new fingerprint from a trusted channel (cloud console, provisioning logs, the admin)
    ssh-keyscan -t ed25519 server.example.com 2>/dev/null | ssh-keygen -lf -
    # 2. Only if it matches: remove the old entry and connect again
    ssh-keygen -R server.example.com
    ssh-keygen -R 203.0.113.10
  2. 2.

    为大批服务器使用 SSH 主机证书

    信任主机 CA 的客户端会接受重建后的服务器,只要新密钥由该 CA 签名即可,无需逐台主机固定密钥。

    text
    # known_hosts: trust host keys signed by your SSH CA instead of pinning each key
    @cert-authority *.internal.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... ssh-host-ca

相关错误

浏览完整的签名错误库