sshが繋がらない時の解消法 - known_hosts編

プログラミング、サーバー、ネットワーク、IT用語、ハマったときのトラブルシューティングなど様々なIT関連の話題をひたすら書いていく技術ブログです。

2017年1月31日火曜日

sshが繋がらない時の解消法 - known_hosts編


AWSなどで古いインスタンス(現行で動いているインスタンス)から新しいインスタンスにアドレスの関連付けを行ったときにsshが繋がらなくなる時の対処法です。こんな感じでwarningが出てきます。

$ ssh hogehoge
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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
29:24:c2:69:a3:b0:dc:4d:23:fc:9d:85:9f:ea:01:9b.
Please contact your system administrator.
Add correct host key in /home/grgrjnjn/.ssh/known_hosts to get rid of this message.
Offending key in /home/grgrjnjn/.ssh/known_hosts:3
RSA host key for remote_host has changed and you have requested strict checking.
Host key verification failed.

sshは何をしているのか?

sshは安全な接続を行うために、接続先サーバの情報をクライアント側に保存します。再度ssh接続したときには、以前保存したこの情報と、今から接続しようとしているサーバの情報が一致しているかを確認して安全に繋ぐことができる。よく、初めて新しい接続先に繋いだ時に yes/no と聞かれるのは、 known_hosts に追加するか?ということになります。これにより例えば意図しないサーバーへ接続してしまうことを防ぐことができます。

この動作により、IPアドレスが紐付いているサーバーが変わってしまっているので、sshがwarningを出してきます。では、どうすればよいのでしょうか?

.ssh/known_hostsで該当する行を削除する

解決策は.ssh配下にあるknown_hostsの該当する中身を削除します。

コマンド
ssh-keygen -R IPアドレスorホスト名

結果
/home/grgrjnjn/.ssh/known_hosts updated.
Original contents retained as /home/grgrjnjn/.ssh/known_hosts.old

ここでsshをしてみます。うまくいけば接続できます。できなければ、know_hostsの中にエラーになる(繋ごうとしている)IPアドレスかサーバー名で始まる行を手動で削除します。その後再度sshを行うと今度は接続できると思います。

◯トラブルの解決方法の一覧はこちら



最近の投稿