ssh – known_hosts から鍵を削除する

hosts man-in-the-middle openssh ssh

私はここ数週間の間にいくつかの仮想マシンを構築しました。問題は、.ssh/known_hostsMan in the middleの警告が表示されることです。これは、別のフィンガープリントが仮想マシンのIPに関連付けられているために発生します

しかし、.ssh/known_hostsファイルでは、IPに関連するレコードは見つからず、奇妙な鍵のような2つの文字列と “ssh-rsa “があるだけです

どなたか、known_hostsの古いキーを削除する方法をご存知の方はいらっしゃいませんか?

  167  Adam Matan  2009-08-26


ベストアンサー

sed -i '6d' ~/.ssh/known_hosts

ファイル ~/.ssh/known_hosts:6 を修正し、6 行目を削除します

私の意見としては、ssh-keygen -Rを使うのはopensshのパワーユーザにとってはより良い解決策であり、通常のLinux管理者は上記の方法を使ってsedのスキルを新鮮なものにしておく方が良いでしょう

94  mikewaters  2010-07-02


一番簡単なのは

rm -f .ssh/known_hosts

ssh でファイルを再作成しますが、他のホストの鍵チェックができなくなります!

または、使用することができます

ssh-keygen -R "hostname"

あるいは、ssh の “man-in-the-middle” メッセージが known_hosts ファイルのどの行に問題のあるフィンガープリントがあるかを示しているはずです。ファイルを編集して、その行にジャンプして削除してください

163  Sean Staats  2009-08-26


そのためのssh-keygenスイッチ(-R)があります

man ssh-keygenを読む

-R hostname

known_hosts ファイルから hostname に属するすべての鍵を削除する。このオプションは、ハッシュ化されたホストを削除するのに便利です (上記の -H オプションを参照してください)

133  user201564  2013-02-22


この問題を取り除くには、以下のコマンドを実行する必要があります。ターミナルを開き、以下のコマンドを入力します

以下のすべての例では、-R の後の値を置き換えてください

ssh-keygen -R server-name
ssh-keygen -R server.ip.addre.ss
ssh-keygen -R 202.54.1.5
ssh-keygen -R server1.example.com

20  Tarun Gupta  2016-05-28


警告は、既知のhostsファイルの正確な行を教えてくれます

一例を挙げてみます

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for foo-bar.net has changed,
and the key for the corresponding IP address 127.0.0.1
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in /home/user/.ssh/known_hosts:6
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

/home/user/.ssh/known_hosts:6の部分を見てください。ファイルと行番号を指定します

19  innaM  2009-08-26


また、UserKnownHostsFile および StrictHostKeyChecking フラグを使用して、known_hosts ファイルをチェックしないように ssh に指示することもできます

For instance:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com

使いやすいように、これをエイリアスにすることができます

alias boldssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

これで、サーバーの証明書を信頼していると確信したときにはいつでもboldsshすることができるようになりました

9  rouble  2014-03-12


すべての回答は良いですが、本当のSSHプロのために、我々は(標準ではない)ポート番号でssh署名を削除する方法についての情報が不足しています

  • シンプルな SSH ホスト署名削除コマンドです

    ssh-keygen -R example.com
    
  • 複雑な ssh 鍵の削除、例えば、標準ではない 222 番ポートで ssh に接続している場合

    ssh example.com -p 222
    

と警告を取得し、これを削除するには、角括弧コロンポート番号を使用する必要があります

    ssh-keygen -R [example.com]:222

これが非標準設定のユーザーのために役立つことを願っています

8  Arunas Bartisius  2018-05-16


ここではExエディタを使った方法を紹介します

ex +6d -scwq ~/.ssh/known_hosts

ここで、6番目は警告メッセージに記載されているあなたの行番号です。このようなものです

home/user/.ssh/known_hosts:6 <== LINE NUMBER での IP の不正な鍵


一般的には、ファイルを非対話的に編集するには、Stream EDitor である sed の代わりに、ex を使用することをお勧めします

1  kenorb  2019-10-09


ホスト名またはIPのエントリは最初の列にあるべきです。警告はまた、違反するキーが存在する行番号をリストアップしなければなりません

0  stimms  2009-08-26


また、rmknownhost 111 (111 は削除する行です) で既知のホストから一行を削除することもできます

#! /usr/bin/env ruby
line = ARGV[0] || raise("gimme line to remove")
hosts = File.expand_path("~/.ssh/known_hosts")
content = File.readlines(hosts)
removed = content.delete_at line.to_i - 1
puts "Removed:\n#{removed}"
File.open(hosts, 'w'){|f| f.write content * ""}

これをrmknownhostとしてPATHからフォルダに保存してください

0  grosser  2010-06-22


テキストファイルです。vi(m)で簡単に編集できますし、問題の行を削除して(dd)、ファイルを保存して(wq)おけばいいだけです。しかし、ホストを削除するための特定のコマンドがあるのであれば、それが一番安全な方法でしょう

0  Ryan Griggs  2014-06-27


タイトルとURLをコピーしました