はじめに:sshの接続先が変わる

個人開発していると、サーバーを作っては壊してを繰り返します。

同じIPアドレスを使い回すけど、昨日はUbuntu、今日はRHELになっているというのはよくあることです。

そんな状況でsshしていると、「sshの接続先ホストが変わっているよ!」と警告を受けることがあります。

事象

sshしようとすると、以下ようにメッセージが出力されます。

$ ssh user@192.168.1.49
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 ED25519 key sent by the remote host is
SHA256:6EwzyhIU12baRfkDcLFntBu958FvG8DGY9vSCD8wC4c.
Please contact your system administrator.
Add correct host key in /Users/yamadatt/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/yamadatt/.ssh/known_hosts:26
Host key for 192.168.1.49 has changed and you have requested strict checking.
Host key verification failed.

対処策

対処はssh-keygen -Rです。

オプションの-Rの引数にホスト名を入れて、指定したホストに属する鍵を全て取り除きます。私は以下のようにメッセージと共に鍵が取り除かれました。

ssh-keygen -R 192.168.1.49 
# Host 192.168.1.49 found: line 24
# Host 192.168.1.49 found: line 25
# Host 192.168.1.49 found: line 26
/Users/username/.ssh/known_hosts updated.
Original contents retained as /Users/yusername/.ssh/known_hosts.old