ssh を使用して初めてサーバーに接続したときのバックグラウンドでの動作
初めてサーバーに接続するとき、サーバーは、正しいシステムに接続されていることを確認するように求めます。次の例では、ssh コマンドを使用して、host03 という名前のリモート ホストに接続しています:
# ssh host03 The authenticity of host 'host03 (192.0.2.103)' can’t be established. ECDSA key fingerprint is ... Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'host03,192.0.2.103' (ECDSA) to the list of known hosts.
ホスト検証は、OpenSSH の主要な機能の 1 つです。このコマンドは、接続先と思われるホストに接続していることを確認します。 yes と入力すると、クライアントはサーバーの公開ホスト キーをユーザーの ~/.ssh/known_hosts ファイルに追加し、必要に応じて ~/.ssh ディレクトリを作成します。次にリモート サーバーに接続するときに、クライアントはこのキーをサーバーが提供するキーと比較します。キーが一致する場合、接続を続行するかどうかは尋ねられません。
ホスト キーの検証に失敗したエラーの原因
誰かがあなたをだまして自分のマシンにログインさせようとして、あなたの SSH セッションを傍受できるようにしようとすると、次のような警告が表示されます:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 dd:cf:50:31:7a:78:93:13:dd:99:67:c2:a2:19:22:13. Please contact your system administrator. Add correct host key in /home/user01/.ssh/known_hosts to get rid of this message. Offending key in /home/lcz/.ssh/known_hosts:7 RSA host key for 192.168.219.149 has changed and you have requested strict checking. Host key verification failed.
このような警告が表示された場合は、停止して、リモート サーバーのホスト キーを変更する理由があるかどうかを判断します (SSH がアップグレードされたか、サーバー自体がアップグレードされたかなど)。ホスト キーを変更する正当な理由がない場合は、状況が解決されるまで、そのマシンに接続しようとしないでください。
「ホスト キーの検証に失敗しました」エラーを修正する方法
方法 1 – 古いキーを手動で削除する
1. ソース サーバーでは、古いキーはファイル ~/.ssh/known_hosts に保存されます。 .
2. このイベントが正当であり、SSH サーバーが別のキーを提示する理由が正確にわかっている場合にのみ、known_hosts ファイルを編集して、有効でなくなったキー エントリを削除します。クライアント/ソース サーバーの各ユーザーは、ホーム ディレクトリに独自の known_hosts を持っています。宛先サーバーの特定のユーザーのファイル内のエントリを削除するだけです。例:
– root がサーバーに ssh したい場合は、/root/.ssh/known_hosts のエントリを削除するだけです
– testuser がサーバーに ssh したい場合は、ファイル /home/testuser/.ssh/known_hosts のエントリを削除します .
3. 私の場合、宛先サーバー 192.168.219.149 のキー (赤で強調表示) をファイル /home/user01/.ssh/known_hosts から削除します。
# vim /home/user01/.ssh/known_hosts 172.104.9.113 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLrY91bQOihgFZQ2Ay9KiBG0rg51/YxJAK7dvAIopRaWzFEEis3fQJiYZNLzLgQtlz6pIe2tj9m/Za33W6WirN8= 192.168.219.148 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU= 192.168.219.149 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU=
方法 2 – ssh-keygen コマンドを使用して古いキーを削除する
ssh-keygen コマンドを使用して古いキーを削除することもできます。コマンドを使用するための構文は次のとおりです。
$ ssh-keygen -R [hostname|IP address]
たとえば、この場合、IP アドレスを使用して古いキーを削除します。
$ ssh-keygen -R 192.168.219.149 # Host 192.168.219.149 found: line 3 /home/user01/.ssh/known_hosts updated. Original contents retained as /home/user01/.ssh/known_hosts.old注意 :SSH サーバーが別のキーを提示する理由が正確にわからない場合は、known_hosts ファイルが正しくないか、誰かがこのサーバーとネットワーク接続を調査して、予期しない変更の理由を理解する必要があります。
確認
リモート サーバーが ~/.ssh/known_host ファイルに新しいキーを追加する確認を求めた場合、古いキーが正常に削除されたことを確認します。リクエストを確認すると、ソース マシンは新しいキーを ~/.ssh/known_host ファイルに追加します。
$ ssh [email protected] The authenticity of host '192.168.219.149 (192.168.219.149)' can't be established. ECDSA key fingerprint is SHA256:V+iGp3gwSlnpbtYv4Niq6tcMMSZivSnYWQIaJnUvHb4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.219.149' (ECDSA) to the list of known hosts.