SSH経由で接続する際の「リモートホストIDが変更されました」という警告


21

今日、サーバーにログインしようとしたときにこのメッセージが表示されました。私は何をすべきか?どうしたの?

$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.

2
余談ですが、ローカルおよびリモートでrootとしてログインするのを避け、代わりにsudoと組み合わせて非特権ユーザーを使用することもできます。
スティーブビーティー

回答:


12

最近、サーバーなどにOSを再インストールしましたか?それが原因です。

これを修正するには:http : //www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

解決策1:ssh-keygenを使用してキーを削除する

この-Rオプションを使用して、ホスト名に属するすべてのキーをknown_hostsファイルから削除します。このオプションは、ハッシュされたホストを削除するのに役立ちます。リモートホスト名がserver.example.comの場合、次を入力します。

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

これで、問題なくホストに接続できます。

解決策2:正しいホストキーを追加する /home/user/.ssh/known_hosts

known_hostsファイル全体を削除する必要はなく、そのファイルの問題のある行だけを削除する必要があります。たとえば、次のように3つのサーバーがある場合。

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

2番目のサーバー(myserver.com)を削除するには、ファイルを開きます。

# vi +2 .ssh/known_hosts

そして、ddコマンドを押して行を削除します。ファイルを保存して閉じます。または次を使用

$ vi ~/.ssh/known_hosts

行2に移動し、次のコマンドを入力します

:2

ddで行を削除して終了します。

dd
:wq

または、次のようにsedコマンドを使用して、行番号44の問題のあるキーを削除できます。

$ sed -i 44d ~/.ssh/known_hosts

解決策3:sshサーバーが1つしかない場合は、known_hostsファイルを削除するだけです

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

sshでもう一度接続してみます。これで、ssh
を介してサーバーに接続できるようになります。

ssh username@server-ip-here
ssh nixcraft@server1.cyberciti.biz

次に、~/.ssh/known_hosts次のようにキーを追加するための新しいプロンプトが表示されます。

The authenticity of host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.

9
サーバーのSSHホストキーを変更しなかった場合、ホストキーのコピーを交換しないでください。これは、誰かが中間者攻撃を実行して通信を妨害しようとしている兆候である可能性があるためです。
キーズクック

7

私が言えることから、これらの答えはすべて、警告に対処するのではなく、警告を抑制することに関するものです。つまり、この警告は、サーバーが以前のように見えないことを示しています。これが危険な理由については、https://en.wikipedia.org/wiki/Man_in_the_middle_attackを参照してください

man ssh特にこのセクションを読んでください:

ホストキーの検証

サーバーに初めて接続するときに、サーバーの公開キーのフィンガープリントがユーザーに提示されます(オプションStrictHostKeyCheckingが無効になっている場合を除く)。指紋はssh-keygen(1)を使用して決定できます:

   $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

安全のために、あなた(またはあなたが信頼する誰か)は、接続しているサーバーで最初にこのコマンドを実行する必要があります。質問の警告で与えられたもののような指紋をあなたに与えます。もちろん、多くの場合、この情報はありませんが、何かが疑われる理由がある場合は、そのコマンドを実行することで、サーバーの署名が実際に変更されているかどうか、または疑わしいものがあるかどうかを確認できます。


1
ホストがmd5ハッシュの代わりにsha256フィンガープリントを提供する場合、これを使用します。ssh -o FingerprintHash=md5 example.org
デクランマッケナ

1
もっとFingerprintHash上:superuser.com/questions/929566/...(。つまり、SHA256が好まれるはずですが、あなたが最近十分にアップグレードしていない場合は、その値を知らないかもしれない)
unhammer

2

同じ問題に直面しました。known_hostsファイル全体を削除したくない場合は、次のコマンドを実行できます。

ssh-keygen -R 10.10.10.69

known_hostsを削除しても問題ありません。接続するたびに、接続する各サーバーをリストに追加するだけです。ホストがまだ信頼されていないため、スクリプトも台無しになる可能性があります。このアラートは、ホストの署名(通常、再インストールまたはキーのローテーションが原因で生成された新しいキーに接続しようとしているコンピューター)が発生したときに発生します。


0

誤検知を警告していると思われる場合は、/ root / ssh / known_hostsを削除して新しい検証を開始できます。


3
これを行わないでください。他の既知のホストが失われます。代わりに、誤検出であることが確実な場合は、特定の行を削除します。この場合、「known_hosts:8」行8です。
ロジャーライト

0

最近サーバーを再インストールした場合、またはホストキーを変更した場合は、おそらく〜/ .ssh / known_hostsファイルから行8を削除し、サーバーを再度追加する(sshを実行して「yes 「鍵の確認を求められた場合)


0

サーバーはローカルネットワーク上にあるため、非常に自信があります。

システムを再インストールした場合、これは正常ですが、known_hostsファイルを削除する代わりに、 echo "" > ~/.ssh/known_hosts


人々はまだローカルネットワークでトリックをすることができます。ビジネスまたは学校のネットワークには、信頼できないという余地がたくさんあります。
アゼンデール


0

この行をコピーしますが、ユーザ名とホスト名/ IPに入れuserremote-server

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

例えば:

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

ローカル端末に貼り付けて実行します。これは私のために働いた。


0

sshを発行しているクライアントノードで、

vi ~/.ssh/known_hosts

sshしようとしているIPと同じネットワーク上にあるIPアドレスで始まる行をすべて削除します。これにより、クライアントノードは既知のホストのリストに永続的に追加(ECDSA)されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.