Closed1

ssh keygen -R hostnameが効かない?!

awonosukeawonosuke

同じIPアドレスで立て直したサーバーなどにssh接続をしようとすると、変更前の接続ホストの公開鍵の情報が保存されており、以下のようなエラー出力がされる。

$ ssh hostname                          
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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.
*** 以下略 ***

この状況に対して、$HOME/.ssh/known_hostsからその対象ホストの行を削除すれば良いが、面倒なので、よくssh-keygen -R hostnameを実行することで一発で消してくれる。
https://qiita.com/hnw/items/0eeee62ce403b8d6a23c

しかし、今回コマンド実行してもエラーが消えなかった($HOME/.ssh/known_hostsファイルから対象の行が消せなかった)ので、ちょっと焦ったが、添付してるQiita記事にあるようにポート番号まで指定してあげると消すことができた。

次のような形式でホスト名に加えてポート番号を指定することもできます。[]はシェルのワイルドカード文字ですので、クォーティングは必須です。

$ ssh-keygen -R '[hostname]:port'

サーバーを立てた時は22番ポートで接続していたが、その後ポートを変更したので同じホスト名でポート番号が違う行が作成されていたためホスト名だけでは行の特定ができなかったのかな?と思っている。ちょっと焦ったので備忘録として残しておく。

このスクラップは2023/03/07にクローズされました