概要
踏み台サーバからEC2インスタンスへアクセスしようとしたら、WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
というエラーメッセージが表示されました。本記事では、こちらの原因と解決方法を記載します。
前提
アクセスしようとしたEC2インスタンスは、毎日起動・停止を繰り返す設定にしており、その度にプライベートIPが変わるようになっています。ですので、踏み台サーバからアクセスする際は以下のようなコマンドで実施しています。
ssh -i sample_ecs.pem ec2-user@{プライベートIPアドレス}
エラー全文
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 ECDSA key sent by the remote host is
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Please contact your system administrator.
Add correct host key in /home/ec2-user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/ec2-user/.ssh/known_hosts:22
ECDSA host key for 192.168.10.82 has changed and you have requested strict checking.
Host key verification failed.
原因は?
このメッセージは、SSHがリモートホストの識別情報(ホストキー)が以前と異なることを検出したときに表示される警告。識別情報(ホストキー)とは何か?というと、SSHが接続先のホストが以前と同じであることを確認するために使用する「暗号化された鍵のペアの一部」で、known_hosts
ファイルに保存されています。
(これが変更されると中間者攻撃(Man-in-the-Middle attack)の可能性があるので、エラーメッセージにもそのように表示されています)
そして一度保存された後、たまたま同じIPアドレスのホスト(上記の場合192.168.10.82
)でアクセスしてしまったため、以前のIPアドレスに関連付けられたホストキーと新しいIPアドレスに関連付けられたホストキーが異なるよ、中間者攻撃の可能性あるかもよ?という事態になってしまったのです。
ググってみると、「IPアドレスの振り直しやOS再インストールなどで公開鍵が変わってしまった場合、このようなエラーメッセージが出る」という記事がいくつかあったので、そのようなケースに生じる場合もあると思います。
解決策は...
以前のIPアドレス(192.168.10.82
)でアクセスした際に関連付けられた古いホストキーがknown_hosts
ファイルに保存されているので、それを削除してあげれば良いです。
vi /home/ec2-user/.ssh/known_hosts
エラーメッセージに22行目と記載があるので該当の行を削除。すると、次回接続時に新しいホストキーがknown_hosts
ファイルに追加されます(=新しいIPアドレスに関連付けられたホストキーを再度受け入れることができるようになる)。
これにより、エラーは解決!
私は直接エディタで編集しましたが、ssh-keygen
コマンドでも可能です。
ssh-keygen -R 192.168.10.82
上記により、特定のホストに関連付けられたエントリを手動で削除することができます。