SSHリモートホストIDが変更されました


619

サーバーを再インストールしたところ、次のメッセージが表示されました。

[user@hostname ~]$ ssh root@pong
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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.
The fingerprint for the RSA key sent by the remote host is
6e:45:f9:a8:af:38:3d:a1:a5:c7:76:1d:02:f8:77:00.
Please contact your system administrator.
Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:4
RSA host key for pong has changed and you have requested strict checking.
Host key verification failed.

インターネットで見つけたさまざまな解決策を試しました。私のknown_hostsファイル(通常は~/.ssh/known_hosts)はにあり/var/lib/sss/pubconf/known_hostsます。編集を試みましたが、1つの状態のままです。ipa-clientとFedora 19 をインストールしました。この警告を解決するにはどうすればよいですか?

これまでに回答したすべての回答は、Freeipaをインストールしていない場合にのみ機能します。

以下のアドリンからのコメントでfreeipaの正しい答えはここにあります


1
この問題がデバッグできるようにIPアドレスの競合nslookupがある場合にも、この問題が発生する可能性があることを突き止めました
sharrajesh

1
ここでデッドロックがあります。これは重複としてマークされているため、誰も回答を追加できず、リンクされているトピックはトピック外としてマークされているため、そこにも回答を追加できません。known_hostsを削除すると、問題も修正されます。
zar 2015年

1
私も同じ問題を抱えていました。鉱山や他人のために、ここで問題とそれに対する私の答えです:superuser.com/questions/1071204/...
adrin

3
最初に自分の鍵を確認しようとしている人として、この回答は役に立ちました。askubuntu.com/a/83499/620623
Declan McKenna

sharrajeshが言及しているように:(私の場合はFreeIPAで)DNSエントリを確認し、ネットワークから到達できないIPを持つ複数のAエントリがないことを確認します。
th3penguinwhisperer 2017

回答:


1071

これが最も簡単な解決策です

ssh-keygen -R <host>

例えば、

ssh-keygen -R 192.168.3.10

ssh-keygenマニュアルページから:

  • -R hostnameホスト名に属するすべてのキーをknown_hostsファイルから削除します。このオプションは、ハッシュされたホストを削除するのに役立ちます(上記の-Hオプションを参照)。

私はWindowsとこのソリューションを使用していますが、キーの削除も機能せず、他に何を試すことができますか?
jaycode

5
了解しました。Windowsでは、このためにgit bashのターミナル(または任意のMingW32ターミナル)を使用する必要があります。トリッキー。
jaycode

25
特定のポートを介して接続している場合は、などの構文で削除する必要がある場合があることに注意してくださいssh-keygen -R [127.0.0.1]:3022。.ssh / known_hostsファイルを確認して、明示的な内容を確認してください。
Adam Johns、

4
これを試してみると、「<ホスト名>が〜/ .ssh / known_hostsに見つかりません」というエラーが表示される
Nodeocrat

3
この警告が発生するのはなぜですか?
Vilas Joshi

199

使用する

ssh-keygen -R [hostname]

IPアドレス/ホスト名の例は次のようになります。

ssh-keygen -R 168.9.9.2

これにより、既知のホストからホストの違反を更新します。-fフラグを使用して、known_hostsのパスを指定することもできます。


1
対応するキーの削除$ ssh-keygen -R {server.name.com}| $ ssh-keygen -R {ssh.server.ip.address}| $ ssh-keygen -R server.example.com
DaddyMoe、2015年

5
説明なしの回答がどのようにして多くの賛成票を獲得するのですか?。セキュリティ上の懸念なし、説明なし.... -1
ダニエルW.

4
また、以下の他の回答のコピーのようにも見えます。modが...この混乱を一掃してください
ダニエルW.

115

Digital Ocean Ubuntuイメージを再作成した後も、同じエラーが発生しました。次のコマンドを、サーバーIPの代わりに使用しました[IP_ADDRESS]

ssh-keygen -R [IP_ADDRESS]

どうもありがとうございます!私はホスト名を使用しており、IP_ADDRESSでのみ機能しました:)
J. Lopes

1
これは私のためにそれをし、受け入れられた答えであるはずです。後でこの回答が2部あり、どちらも賛成票が多い理由はわかりません。
ウィリアムジャッド2018

あなたのものは同じエラーではありませんでした。サーバーでSSSDが実行されていませんでした。OPを参照してください。
-Mercury00

39

サーバーを再インストールすると、IDが変更され、このメッセージが表示されるようになります。Sshは、接続先のサーバーを変更したかどうか、またはすべての通信を傍受するために中間サーバーがネットワークに追加されたかどうかを知る方法がないため、注意を喚起します。

関連するエントリを削除して、known_hostsからキーを削除するだけです。

sed '4d' -i /var/lib/sss/pubconf/known_hosts

4dアカウントですOffending RSA ...known_hosts:4


1
おかげで、理由はわかりませんが、削除すると、再びその中に含まれます。私はsssdサービスを停止しようとしましたが、この効果はなくなりましたが、sssdを開始した後、再び表示されます。
FilipDobrovolný

〜/ .sshディレクトリをバックアップしてから削除します。〜/ .sshが吹き飛ばされた後、サービスはキーを再追加し続けますか?
mockinterface 2013

.sshの名前を.ssh_oldに変更しました。新しい接続を試みた後、空のディレクトリ.sshを作成します。また、/ var / lib / sss / pubconf / known_hostsを「編集可能」にすることはできません。
FilipDobrovolný

4
これを行うためのよりポータブルな方法: sed -i -e 4d /var/lib/sss/pubconf/known_hosts
Pierz 2015

2
identificationこのエラーメッセージのような混乱を引き起こさずにサーバーを再構築したい場合、サーバーをどのようにバックアップしますか?
Ninjaxor

38

ハンマーはすべての既知のホストを一挙に取り除くことです:

rm ~/.ssh/known_hosts

ジャンプボックスから短期のサーバーの小さなサブネットを使用していて、同じsshキーを共有するサーバーの内部IPアドレスを頻繁に再利用しているため、これに直面します。


受け入れられた回答が機能しない場合、迷惑なVMで私のために働いた。
100pic 2018

1
便利なツールですが、これはMitM攻撃(known_hosts防止するためのもの)の可能性があります。そこにあるすべてのホストが安全であると確信している場合にのみ、これを行ってください。
Freedom_Ben

26

問題は、以前にリモートコンピューターへのSSH接続を受け入れており、そのリモートコンピューターのデジタルフィンガープリントまたはSHA256ハッシュキーが最後に接続してから変更されていることです。したがって、SSHを再試行するか、githubを使用してコードをプルすると、SSHも使用され、エラーが発生します。どうして?以前と同じリモートコンピューターアドレスを使用していますが、リモートコンピューターは別の指紋で応答しています。そのため、以前に接続していたコンピュータを誰かがスプーフィングしている可能性があります。これはセキュリティの問題です。

リモートコンピューターが危害を受けたり、ハッキングされたり、スプーフィングされたりしていないことを100%確信している場合は、リモートコンピューターのknown_hostsファイルのエントリを削除するだけです。接続時にSHA256フィンガープリントIDとの不一致がなくなるため、これで問題が解決します。

Macではここに私がやったことがある:

1)と書かれている出力の行を見つけRSA host key for servername:port has changed and you have requested strict checking.ます。そのログ出力から、サーバー名と潜在的なポートの両方が必要になります。

2)SSHの既知のホストファイルをバックアップする cp /Users/yourmacusername/.ssh/known_hosts /Users/yourmacusername/.ssh/known_hosts.bak

3)コンピュータの古い指紋が保存されている行を見つけて削除します。手順1のサーバー名とポートを使用して、特定の問題のあるリモートコンピューターのフィンガープリントを検索できます。nano /Users/yourmacusername/.ssh/known_hosts

4)CTRL-Xで終了し、Yを選択して変更を保存します

今タイプしてください ssh -p port servernameと、そのコンピューターに最初にSSHで接続しようとしたときに行った元のプロンプトが表示されます。次に、そのリモートコンピューターの更新されたSHA256フィンガープリントをknown_hostsファイルに保存するオプションが表示されます。ポート22でSSHを使用している場合、-p引数は必要ありません。

元のknown_hostsファイルを復元できる問題: cp /Users/yourmacusername/.ssh/known_hosts.bak /Users/yourmacusername/.ssh/known_hosts


3
承認された回答としてマークする必要があります。これらの手順に従うことで、問題が解決しましたが、ssh-keygen -R [IP_ADDRESS]うまくいきませんでした。ありがとう!
Yusuf Kamil AK

ええ、公平ではないケースの1つで、確かに最良の答えです。2番目と3番目の答えは、1番目が言ったことを繰り返すだけで、それらのすべては不完全な解を持っています。
ブラソフィロ

16

多くの人がすでに言ったようにssh-keygen、すなわち

ssh-keygen -R pong

また、ホストキーチェックを一時的にオフにすることを検討してください。

ssh -oStrictHostKeyChecking=no root@pong

私が.ssh / configに使用しているもの:Host ???? CheckHostIP no StrictHostKeyChecking no(3行、2番目から表形式で作成)
XXL

15

私のために働く!

エラー: / var / lib / sss / pubconf / known_hosts内の問題のあるRSAキー:4

これは、行番号に問題のあるRSAキーがあることを示しています。4

解決策1

1。 vi /var/lib/sss/pubconf/known_hosts

2 remove line no: 4

3 Save and Exit, and Retry

解決策2:

ssh-keygen -R "you server hostname or ip"

または

解決策3:

sed -i '4d' /root/.ssh/known_hosts

これ4thにより/root/.ssh/known_hosts、その場所の行が削除されます(-i)。


1
これは、ルートの.sshknown_hostsファイルで機能します。SSSDによって管理され、リモートサーバーによって入力される/ var / lib / sss / pubconf / known_hostsは対象外です。
Mercury00

1
私の場合、何らかの理由で、known_hosts * 2 *で問題が発生しました。これらの手順に従うと、@ Sahil Gulatiに感謝します。
Lucas

11

私はmockinterfaceのソリューションを使用しましたが、sed -iはうまく機能しませんでしたが、vimを使用して手動で行を削除することで解決しました。

sudo vim /var/lib/sss/pubconf/known_hosts

必要に応じて他のテキストエディタを使用できますが、おそらく管理者権限を表示する必要があります


1
はい、known_hostsファイルで同じIPのレコードを削除すると、問題が解決します。
ワービー、2015年

sshを再試行すると、SSSDによってエントリーが即座に再作成されます。sss pubconfknown_hostsは管理対象ファイルであり、ローカルサーバーによって読み込まれるローカルリポジトリではないことに注意してください。
Mercury00

9

Macユーザーの場合-Rは、ssh-keygenコマンドのフラグを使用できます。簡単な例:

ssh-keygen -R THE_IP_ADDRESS

THE_IP_ADDRESSsshしようとしているIPです。そして、あなたはうまく接続することができます。


8

これは、リモートコンピュータの設定が変更されたためです。そのために現在のキーを削除します。

vim /root/.ssh/known_hosts

接続しているIPの行を削除します。


7

編集し/home/hostname /.ssh/known_hosts、4行を削除して保存します。

次に、実行ssh root@pong:あなたはこのようなメッセージが表示されます、再びAre you sure you want to continue connecting (yes/no)? yes、ちょうど印刷しますyes

注:問題が発生した場合は、最初にヒントを読んでください。


何が起こっているのかを実際に説明する最良の回答。
プロメテウス

6

ここでの他の答えは適切であり、とにかく、私はを削除することで問題を解決しました~/.ssh/known_hosts。これは確かに問題を解決しますが、おそらく最善の方法ではありません。


6

私の場合、同じIPを持つマシンとのssh接続が以前にあったために起こりました(たとえば192.152.51.10)のあり、システムが前のホストのRSAキー(/home/user_name/.ssh/known_hostsに保存されている)を考慮していたために発生しました。ミスマッチ。

この問題を解決するには、以前に保存したIP 192.152.51.10のRSAキー削除する必要があります。

ssh-keygen -f "/home/user_name/.ssh/known_hosts" -R 192.152.51.10

5

Macでテストされたシンプルなワンライナーソリューション:

sed '/212.156.48.110/d' ~/.ssh/known_hosts > ~/.ssh/known_hosts

既知のホストからターゲットのSSHホストIP のみを削除します。

ここで、212.156.48.110はターゲットホストのIPアドレスに置き換えられます。

原因:ターゲットIPがポート転送のために別のマシンですでに認識されているために発生しました。接続する前にターゲットIPを削除すると、問題が解決します。


4

次のコマンドを使用します。

truncate -s 0 /home/SYSTEM_NAME/.ssh/known_hosts

コマンドが実行することと実行しないことの説明を追加してください。
ダニエルW.

6
なぜファイルを切り捨てるのですか?確認済みの情報を含め、すべての情報が失われます。これは、単一の変更された公開ホストキーに対して機能するための悪い方法です。
Daniel W.

1
これは完全なハックです:Dが動作します:D
ベンジャミン

ヒント:これにより、他のすべてのホスト情報も削除されます。マシンなどから自動スクリプトを実行している場合(デプロイメントなど)、すべてのホストキーを手動で再確認する必要があるため、スクリプトが壊れる可能性があります。最も簡単な解決策を使いたがっている他のユーザーに警告を与えるだけです。
Mateng

3

次のコマンドを使用して、そのエントリをknown_hostsから削除します。

ssh-keygen -R *ip_address_or_hostname*

これにより、問題のあるIPまたはホスト名がknown_hostsファイルから削除され、再度接続が試行されます。

マニュアルページから:

-R hostname
ホスト名に属するすべてのキーをknown_hostsファイルから削除します。このオプションは、ハッシュされたホストを削除するのに役立ちます(上記の-Hオプションを参照)。


3

ただやる:

cd /home/user/.ssh/->ここuserにユーザー名、つまり/home/jon/、たとえば。

その後

gedit known_hosts & その中のコンテンツを削除します。

ssh再び、それが動作するはずです。


3

コマンドを使用してポート2222で実行中のDockerコンテナーに接続しようとしてエラーが発生した場合

mian@tdowrick2~$ ssh pos@localhost -p 2222

次に、この問題を解決するには、ローカルコンピューター(つまり、コンテナーではないホストコンピューター)に移動しcd ~/.ssh/known_hostsテキストエディターでファイルを開きます。で始まる行を削除し[localhost]:2222、ファイルを保存します。もう一度sshしてみてください

mian@tdowrick2~$ ssh pos@localhost -p 2222

エラーは消えますが、コンテナを再起動するたびにエラーを発生させる必要があります。


2

私の解決策は:

  1. vi ~/.ssh/known_hosts
  2. 必要な接続IPを含む行を削除します。

これは、すべてを削除するよりも優れています known_hosts


これは、以下のmiota85と同じ答えです。
ダニエルW.

2

クライアント側の問題のみ(IPの重複キー):

バリアントを解決:

1つのIPをクリアする場合(デフォルトのポート22):

ssh-keygen -f -R 7.7.7.7

1つのIP(デフォルト以外のポート)の場合:

ssh-keygen -f -R 7.7.7.7:333

すべてのIPを高速クリア:

cd ~; rm .ssh/known_hosts

7.7.7.7 -ssh your server ip connect

333 -非スタンダールポート


2

場合によっては、何らかの理由でサーバーを再インストールする必要がある場合、sshで接続すると、サーバーがIDが変更されたと言うことがあります。攻撃ではないことがわかっているが、システムを元に戻した場合は、ssh-keygenを使用して、known_hostsから古いIDを削除できます。

ssh-keygen -R <host/ip:hostname>
root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

再度接続すると、新しい指紋を検証するように求められます。

ssh -l user <host/ip:hostname>
The authenticity of host '<host/ip:hostname>' can't 
be established.
RSA key fingerprint is 3f:3d:a0:bb:59:24:35:6d:e5:a0:1a:3f:9c:86:81:90.
Are you sure you want to continue connecting (yes/no)? yes

1

私はこの問題を抱えていましたが、その理由は非常に単純です。sshログインするIPアドレスが重複しているため、この問題を修正すると、すべてが解決されます。


1

私のマシンでも同じエラーが発生し、known_hostsファイルをクリアすると、問題なく動作しました。


1
ファイルにauthorized_keys問題がある場合は削除したくないknown_hosts
jeb

0

解決:

1- "$ HOME / .ssh / known_hosts"から、接続できないホストを参照している行を削除します。

2-次のコマンドを実行します:ssh-keygen -R "IP_ADDRESSorHOSTNAME"( "IP_ADDRESSorHOSTNAME"を宛先IPまたは宛先ホスト名に置き換えます)

3- ssh接続を再試行します(失敗した場合は、.sshディレクトリの権限を確認してください。700である必要があります)


0

UBUNTU(linux)での私の解決策:

1。「/ home / YOUR_USERNAME / .ssh / known_hosts」にある「known_hosts」ファイルからコンテンツを削除する必要があります

2. "ssh-keygen -t rsa -C" your.email@example.com "-b 4096"のような新しいsshキーを生成します。

3. gitリポジトリ(私の場合はgitlab)のSSHキーに新しいsshキーをコピーして貼り付けます。

わたしにはできる !


-1

AWS EC2。

表示されたメッセージでIPを見つけます。

走る

vim /home/ec2-user/.ssh/known_hosts

矢印キーを使用してメッセージからIPを検索し、クリックします。

dd

これはその行を削除してからエスケープを実行します

:wp

これで節約できます。

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