私はここ数週間の間にいくつかの仮想マシンを構築しました。問題は、.ssh/known_hosts
でMan 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