sshのknown_hostsをコマンドで削除
AWS 運用してると気軽に EC2 インスタンス作りなおそってなるけど、作りなおした後に SSH 接続するとREMOTE HOST IDENTIFICATION HAS CHANGED!
という SSH エラーがでる。
この場合 ~/.ssh/known_hosts
を直接編集して削除する人が多いと思うけど(それで問題ないけど)、編集ミスすることもあり得るのでコマンドでやるのが正しい所作。
sshで怒られる
インスタンスを再作成して同じドメインにした上で ssh 接続すると、以前の host 名と一緒なのにフィンガープリントが異なるため、DNSスプーフィングの疑いがあると警告されてしまう。
$ ssh <host名> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ The RSA host key for <host名> has changed, and the key for the corresponding IP address 2402:4200:1:299:5054:d8ff:fe30:360c is unknown. This could either mean that DNS SPOOFING is happening or the IP address for the host and its host key have changed at the same time. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 RSA key sent by the remote host is 37:4d:b3:8c:af:29:d8:f5:b4:1e:e6:d2:47:e5:96:8b. Please contact your system administrator. Add correct host key in /Users/<ユーザー名>/.ssh/known_hosts to get rid of this message. Offending RSA key in /Users/<ユーザー名>/.ssh/known_hosts:20 RSA host key for <host名> has changed and you have requested strict checking. Host key verification failed.
known_hosts から削除
古いフィンガープリントを削除する必要がある。
~/.ssh/known_hosts から該当の host 名の行を手動削除してもいいけど、コマンドがある。
ssh-keygen -R <host名>
で削除。
DNSキャッシュのクリア
この後、ssh 接続してみたら host がみつからず、ping も通らないという事象がおこることがある。そんなときは DNS のキャッシュをクリアしてみる。
Mac の場合はターミナルから sudo killall -HUP mDNSResponder
する。