SSH接続の時、fingerprintのことで起こるエラーの解決方法

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
...
...

SSH接続しようとしたら、このようなエラーが出て接続できないことありますよね。
今回はこれの解決方法を書いてみます。

解決方法

$ ssh-keygen -R [SSH 接続先]

例:

$ ssh-keygen -R yongjinkim.com

原因

原因はfingerprintが保存されているものと、今回接続しようとしているSSH接続先のfingerprintが異なるから。

説明

継続的安全な接続のために、fingerprint(SSHサーバーの公開鍵の指紋)を~/.ssh/known_hostsに接続の時に保存しておいています。もし、ユーザーの知らない間にサーバーが変わった時、それを感知できるようにするためです。
このことが発生する例をあげると、AWSのElastic IPにEC2インスタンスを一つぶら下げてそのIPに対してSSH接続した後、Elastic IPを他のEC2インスタンスで付け替えてそのIPにSSH接続するとこのようなエラーが発生します。
上記のコマンドは~/.ssh/known_hostsの中身をアップデードしてくれるコマンドです。つまり、~/.ssh/known_hostsを直接修正(該当するものを削除)しても同一の効果を得られます。