ElasticIPを付け替えるとWARNINGが出てSSH接続できない

AWS EC2で、インスタンスAに設定していたElasticIPをインスタンスBに付け替えました。
その後インスタンスBに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 ECDSA key sent by the remote host is
XXXXXXXXXX.
Please contact your system administrator.
Add correct host key in /Users/xxx/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/xxx/.ssh/known_hosts:10
ECDSA host key for X.XXX.XX.XX has changed and you have requested strict checking.
Host key verification failed.

これは何か?

※今回付け替えたIPをIP:hogeとします。

初めてインスタンスAにIP:hogeでSSH接続した際、インスタンスAの署名情報がIP:hogeと紐付いてローカルに記録されます。
次回接続時には、接続先のサーバの署名情報をローカルに記録している署名情報と照合し、変なサーバに接続していないことを確認しています。

今回IP:hogeをインスタンスBに付け替えました。
それにより、インスタンスBの署名情報と、IP:hogeと紐付いたインスタンスAの署名情報が異なるため、なにかおかしいですよと警告してくれています。

対応

$ ssh-keygen -R [IP]

と打てばローカルのIPと紐付いた署名情報を削除してくれます。

直接設定ファイルを編集するやり方もあります。

$ vi ~/.ssh/known_hosts

付け替えたIPを探し、その行を削除して保存。

参考