ここ数週間で、いくつかの仮想マシンを構築しました。問題は、真ん中の警告.ssh/known_hosts
を私に与えることです。これは、別のフィンガープリントが仮想マシンのIPに関連付けられているために発生します。
.ssh/known_hosts
ただし、このファイルでは、IPに関連するレコードは見つかりません。2つの奇妙なキーのような文字列と「ssh-rsa」だけが見つかります。
誰から古いキーを削除するかについてのアイデアはありknown_hosts
ますか?
ここ数週間で、いくつかの仮想マシンを構築しました。問題は、真ん中の警告.ssh/known_hosts
を私に与えることです。これは、別のフィンガープリントが仮想マシンのIPに関連付けられているために発生します。
.ssh/known_hosts
ただし、このファイルでは、IPに関連するレコードは見つかりません。2つの奇妙なキーのような文字列と「ssh-rsa」だけが見つかります。
誰から古いキーを削除するかについてのアイデアはありknown_hosts
ますか?
回答:
sed -i '6d' ~/.ssh/known_hosts
ファイル〜/ .ssh / known_hosts:6を変更し、6行目を削除します。
私の意見でssh-keygen -R
は、opensshのパワーユーザーにとっては、使用する方が優れたソリューションですが、通常のLinux管理者は、上記の方法を使用してsedスキルを新鮮に保つ方が良いでしょう。
/etc/sudoers
せずに編集するように人々に伝えるようなものvisudo
です。sed
スキルを磨きたい場合は、システムを台無しにせずに実行してください。
ssh-keygen -R
ありsed -i {line}d
、かなり「公式」であり、両方とも近い将来に機能します。Util ssh-keygenを使用すると、行番号で削除できます。どちらも完全に受け入れられます(行番号は、現代のデータセンターのホスト名を処理するよりも処理が簡単で、エラーが発生しにくいためです)。
man ssh-keygen
言及しているssh-keygen -R hostname
あなたがちょうど言ったssh-keygen -R
指定されていないホスト名で、そしてあなたはそれによって何を意味するかを説明していません。
最も簡単な解決策は次のとおりです。
rm -f .ssh/known_hosts
sshはファイルを再作成しますが、他のホストのキーチェックを失います!
または、次を使用できます。
ssh-keygen -R "hostname"
または、sshの「man-in-the-middle」メッセージは、known_hostsファイルのどの行に問題のあるフィンガープリントがあるかを示す必要があります。ファイルを編集し、その行にジャンプして削除します。
ssh-keygen -R hostname
も動作します。
ssh-keygen
オプションはコメントのために追加されましたが、説明はありません。この答えはそれほど多くの賛成に値するとは思わない。
これにはssh-keygenスイッチ(-R
)があります。
man ssh-keygen
読み取り:
-R
ホスト名に属するすべてのキーをファイル
hostname
から削除しknown_hosts
ます。このオプションは、ハッシュされたホストを削除するのに役立ちます(-H
上記のオプションを参照)。
[localhost]:port
ブラケットを使用して、= /を推測するカスタムポートを使用したため、行う必要がありました。他の人が言ったように、一時的/テストシステム開発には、SSHキーチェックなしのアプローチも使用します。
ssh-keyscan -H my.ssh.server.example.com >> ~/.ssh/known_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
部品を参照してください?ファイルと行番号を指定します。
この問題を取り除くには、次のコマンドを実行する必要があります。ターミナルを開き、次のコマンドを入力します。
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
ssh-keygen -R
、これまでの他のどの回答よりも構文に関する詳細を提供します。例で正確に何が書けるかを示しています-R
。したがって、この答えは、まったく新しい答えではありませんが、価値があります。
UserKnownHostsFileフラグとStrictHostKeyCheckingフラグを使用して、sshにknown_hostsファイルをチェックしないように指示することもできます。
例えば:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com
使いやすくするために、次のエイリアスを作成できます。
alias boldssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
これで、サーバーの証明書を信頼できることが確実なときはいつでも、単にboldsshすることができます。
~/.ssh/known_hosts
最新の状態を維持するのが面倒だという理由だけで、セキュリティのレイヤーを完全に無効にしますか?なぜ先に進んで使用しtelnet
ないのですか?「確信があるときはいつでも」-確信があるなら、MITM攻撃が何であるかわからないので、おそらくいくつかの良い文献を読むのに時間を費やすべきです。
すべての答えは良いですが、実際のSSHプロでは、ポート番号でssh署名を削除する方法に関する情報がありません。
単純なSSHホスト署名削除コマンド:
ssh-keygen -R example.com
複雑なsshキーの削除。たとえば、非標準ポート222でsshに接続します。
ssh example.com -p 222
警告が表示されます。これを削除するには、角括弧のコロンポート番号を使用する必要があります。
ssh-keygen -R [example.com]:222
これが非標準の構成ユーザーに役立つことを願っています。
rmknownhost 111を使用して、既知のホストから1行を削除することもできます(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
。
sshdel() { sed -i "${@}d" ~/.ssh/known_hosts; }
で呼び出しますsshdel [line number]
。ルビー、バイナリ、心配はありません。
テキストファイルです。vi(m)で簡単に編集し、問題の行(dd)を削除して、ファイル(wq)を保存するだけです。ただし、ホストを削除する特定のコマンドがある場合は、おそらく最も安全な方法です。
HashKnownHosts yes
設定されています。