SSH接続を試みた際に以下のWARNINGが表示され、接続できない状態になりました。
$ ssh server_host
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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
00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00.
Please contact your system administrator.
Add correct host key in /home/hogehoge/.ssh/known_hosts to get rid of this message.
Offending key in /home/hogehoge/.ssh/known_hosts:3
RSA host key for remote_host has changed and you have requested strict checking.
Host key verification failed.
目次
どうしてWARNINGが発生するのか?
このようなWARNINGが表示される原因としては、例として以下の事象が挙げられます。
- サーバ側のOSが再インストールされた
- サーバ側のホスト名が付け替えられた
SSHでは安全な接続を行うために、接続先サーバの情報(RSA公開鍵のフィンガープリント)をクライアントに保存しています。
SSH接続時には、保存されているサーバ情報と、これから接続しようとするサーバの情報が一致しているかを確認します。
これにより、ユーザーの意図しないサーバへの接続を防ぐことができ、安全性を保つことができます。
WARNINGの発生を回避するには?
保存している接続先サーバの情報を削除することで、新規接続として認識されるようになり、エラーを回避することができます。
以下のコマンドを実行することで、指定したサーバの情報が削除され、それと同時に.oldがファイル名の末尾に付加されたバックアップファイルも自動的に生成されます。
$ ssh-keygen -R remote_host_name
/home/hogehoge/.ssh/known_hosts updated.
Original contents retained as /home/hogehoge/.ssh/known_hosts.old
上記方法の他にも、 ~/.ssh/known_hosts
ファイルを直接編集することでも対処可能です。
以下のようにsedコマンドを使用し、対象のサーバ名またはIPアドレスから始まる行を一行削除するだけです。
vimコマンドを使用して、直接ファイルを編集しても問題ありません。
$ sed -i '/remote_host_name/d' ~/.ssh/known_hosts
コメント