尋常でないもふもふ

a software engineer blog

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 する。