SSH 接続エラー "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! " への対処
AWS で、 Elastic IP に紐づく EC2 を削除してから再度作り直して、同じ Elastic IP を関連づけて、そこに SSH 接続しようとしたらエラーがでた。
mac を使用。
エラーの内容
こんなエラーが出た。
$ ssh -i ~/.ssh/hoge.pem user@HOGE-host
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 hoge key sent by the remote host is
hoge:HOGEhauKJDFsaBHSej456pakep354fe94375aszUGSD.
Please contact your system administrator.
Add correct host key in /hoge/.ssh/known_hosts to get rid of this message.
Offending key in /hoge/.ssh/known_hosts:5
hoge host key for HOGE-host has changed and you have requested strict checking.
Host key verification failed.
原因
エラーメッセージにあるように、 fingerprint (フィンガープリント)なるものが存在する。
fingerprint とは、接続したことのあるサーバーの情報のこと。一度接続したサーバーの情報( fingerprint )は、 known_hosts に保存される。
2 回目以降の SSH 接続では、この fingerprint と、接続先のサーバー情報( ホスト名 )を比較し、一致した場合、接続が可能となり、不一致だとこのようなエラーとなる。
このため、初回 SSH 接続時には以下のメッセージが出てきて、 yes/no の回答を求められる。
The authenticity of host '00.000.00.00 (00.000.00.00)' can't be established.
HOGE key fingerprint is hoge:HOGEh38IL09wj456pakep354fe9475aSD.
Are you sure you want to continue connecting (yes/no)?
対処法
known_hosts から対象のサーバー情報( fingerprint )を削除する。
ハッシュ化されていなければ、 known_hosts ファイルをテキストエディタとかで開いて、対象のサーバー情報を削除することもできる。
または、 ssh-keygen
コマンドを使う。(編集ミスとかもありえるので、手動で消すよりコマンド使った方がいいと思う。)
* 00.000.00.00
の部分はホスト名とか、接続先 IP アドレスとか。
$ ssh-keygen -R 00.000.00.00
# Host 00.000.00.00 found: line 4
# Host 00.000.00.00 found: line 5
/hoge/.ssh/known_hosts updated.
Original contents retained as /hoge/.ssh/known_hosts.old