本文へスキップ
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

関連するエラー

署名エラーデータベースをすべて見る