SSH接続で REMOTE HOST IDENTIFICATION HAS CHANGED! が出て接続できない
症状(よく出るエラー)
いつものサーバーに ssh すると WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! と大きな警告が出て、Host key verification failed. で接続が拒否される。
原因
SSH は初回接続時にサーバーのホスト鍵を ~/.ssh/known_hosts に記録し、以後の接続で照合して「本当に同じサーバーか」を検証している。鍵が一致しないこの警告は、サーバーのOS再インストールやSSH鍵の再生成、IPの付け替えといった正当な理由でも出るが、通信を横取りする中間者攻撃の兆候である可能性も本当にある。だから機械的に消してよいエラーではない。
直し方
まず鍵が変わった正当な理由(再構築・移設など)を管理者や自分の作業記録で確認する。理由が確認できたら ssh-keygen -R ホスト名 で古い記録を削除して再接続し、表示される新しい鍵の指紋(fingerprint)をサーバー側で ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub 等を実行した結果と突き合わせてから yes と答える。理由が分からない場合は接続を中止し、特にパスワード認証では絶対にそのまま進めない。