SSH接続時に、次のようなインパクトの強い警告メッセージが出て驚いたことはありませんか?
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Please contact your system administrator.
Add correct host key in /Users/yourname/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /Users/yourname/.ssh/known_hosts:15
Host key for [example.examplehost.net]:2222 has changed and you have requested strict checking.
Host key verification failed.
これは、SSHのセキュリティ機能が正常に働いた証拠です。ここでは、この警告の意味と安全な対処法について解説します。
なぜこのエラーが出るのか?
SSHは、サーバーに初めて接続したときに、そのサーバーの公開鍵(ホスト鍵)をローカルファイル ~/.ssh/known_hosts
に記録します。
次回以降の接続では、保存された鍵と一致するかを確認します。一致しない場合にこのような警告が出ます。
主な原因
- サーバーが再構築された(OS再インストールなど)
- SSHのホスト鍵が変更された
- ホスト名やIPアドレスが別のサーバーに割り当てられた
- 実際に中間者攻撃が発生している可能性(※まれ)
対処手順(自己管理のサーバーで変更が明確な場合)
① 該当行を削除する
メッセージにあったこの行:
Offending ED25519 key in /Users/yourname/.ssh/known_hosts:15
つまり「known_hosts の15行目が問題」と言っています。これを以下のコマンドで削除します(macOSの場合):
sed -i '' '15d' ~/.ssh/known_hosts
Linuxの場合は -i
のオプションが異なるため:
sed -i '15d' ~/.ssh/known_hosts
もしくは ssh-keygen
を使ってホスト名単位で削除することもできます:
ssh-keygen -R [example.examplehost.net]:2222
② 再接続して新しい鍵を保存する
削除後、再びSSH接続すると次のように表示されます:
The authenticity of host '[example.examplehost.net]:2222' can't be established.
ED25519 key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Are you sure you want to continue connecting (yes/no/[fingerprint])?
信頼できるホストであることを確認できたら、yes
と入力します。
Warning: Permanently added '[example.examplehost.net]:2222' (ED25519) to the list of known hosts.
このメッセージが出れば、新しいホスト鍵が保存され、以降は警告なく接続できます。
セキュリティ上の注意点
この警告は、不正な第三者による盗聴や改ざんを防止するための重要な警告です。
対処前に、以下を確認しましょう:
- 鍵が変更されたことに自分で心当たりがあるか
- サーバー管理者からホスト鍵の変更通知が届いているか
- フィンガープリント(SHA256\:XXX…)が正しいか
これらが確認できない場合、不用意に接続しないことが大切です。
まとめ
ステップ | 内容 |
---|---|
1 | 警告メッセージの行番号を確認(例:15行目) |
2 | known_hosts から該当行を削除 |
3 | 再接続し、ホスト鍵を確認のうえ yes で登録 |
SSHのセキュリティ機能は時に厳しく感じられますが、重要な防御壁でもあります。
仕組みを理解し、安全を確保した上で適切に運用していくことが大切です。
コメント