`〜/ .ssh / known_hosts`ファイルを一時的に無視しますか?


48

~/.ssh/known_hostsファイルを一時的に無視する方法はありますか?

mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$ 

注意:

...いくつかの答え(S)/コメント(秒)で私は短いので、それがされて、私の質問は少し誤解を招くあることを認識し、それは私の場合には(通常ですので、)行動予定)なぜ私にその背後にある正当な理由があります「無視」を見たい


9
間違った質問をしている。問題を「無視」しないでください。何が起こっているのかを把握して解決する必要があります。
マイケルハンプトン

9
ユーザーに代弁することはできませんが、1つの例は、自動インストールプロセス(キックスタートなど)を開発している場合です。反復ワークフローには、ビルドプロセスの構築、接続、テスト、変更、および再構築が含まれます何度もスクラッチします。
ゴラドゥス

10
@MichaelHampton-VMwareとVirtualBoxはゲストのIPアドレスをリサイクルするので、これは常に得られます。私にとって、それは正しい質問です:)

1
FWIW LANにシステムがあり、Dropbear(異なるホストキー)を使用して起動時にディスク暗号化パスワードを入力するため、この回答を検索し続けます。
ズラン

1
@jwwこれは、シナリオの間違った質問/解決策です。代わりに、IPアドレスを無視するようにSSHを構成する必要がありますが、それでもホストキーを確認します。例についてはこちらを
ジョンベントレー

回答:


56

一時的にssh -o StrictHostKeyChecking=noチェックをオフにするために使用できますknown_hosts。しかし、これには反対します。ホストキーが変更された理由を本当に確認する必要があります。

別のオプションは~/.ssh/config、問題のホスト用に特定のエントリを追加することです。再起動するたびに新しいホストキーを生成する特定のホストがあり、有効な理由で1日に数回再起動する場合、これは有効なアプローチです。

Host <your problematic host>
  StrictHostKeyChecking no

それは予想される動作です)ので、それは正常です(私の場合)
アレクサス

1
@alexus「期待される」場合、それが起こると予想される特定のホスト名/ IPにオプションを適用できます。
クリリス

1
@alexusそして、これを行うと、sshが提供するすべての保護をほとんど失うことに注意してください。誰かがあなたをMITMし、すべてのトラフィックをキャプチャするのは簡単なことなので、telnetを使用することもできます。
マイケルハンプトン

1
これは動作しなくなりました(少なくともOpenSSH_5.3p1の場合)
-draeath

-o StrictHostKeyChecking=noパスワードでログインする機能を削除します。これに対するフラグの欠如は、ユーザーに行動を強制することを許可するというUNIXの原則に直接反しませんか?現在、ローカルIPを使用してローカルマシンにログインしようとしています。マシンを再フォーマットしたため、ホストキーが変更されました。ここではすべてが理にかなっており、状況下ではセキュリティリスクはありません。
Wowfunhappy

31

POSIX環境で既知のhostsファイルを完全に無視するには、GlobalKnownHostsFileおよびUserKnownHostsFileオプションを/dev/null次のように設定します。

ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host

StrictHostKeyChecking=noオプションを設定すると接続できますが、SSH は引き続き警告を表示します

ssh -o StrictHostKeyChecking=no user@host

他の人が指摘したように、おそらく根本的な問題に対処する方が良いでしょう。たとえば、ホストを検証するためにSSH証明書認証を検討できます。


2
これは、それ以外の場合は無効にされるパスワード認証を使用できるため、現在最高位の投票よりも優れた回答となります(もちろん、パスワードを入力する前に正確に何をしているのかを理解する必要があります...)
VZ。

私は少しはここに混乱している:あなたはいけませんまた、使用-o StrictHostKeyChecking=no に加えて、-o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/nullオプション-の最終的な答えのために?: ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
ガブリエルステープルズ

オンラインで見つけた関連記事:shellhacks.com/disable-ssh-host-key-checking
Gabriel Staples

5

サーバーを再インストールしたためにIDが変更された場合は、指定された行155を削除して/Users/alexus/.ssh/known_hosts先に進む必要があります。

異なるプライベートネットワークを切り替える場合は、sshクライアントもホスト名に応じてキーを保存するため、代わりにホスト名を使用して接続する必要があります。次のようなものを追加します/etc/hosts

10.52.11.171 server1
10.52.11.171 server2

そして、ssh server1サブネット1 ssh server2に接続したときとサブネット2に接続したときに使用します。これにより、両方のサーバーに異なるホストキーを設定できます。


2つのプライベートネットワークを切り替えて、2つの同じIPに接続するとどうなりますか?
アレクサス

1
回答を編集しました。
エタゲンクロ

2
@alexusその後、IPv6が必要です:)しかし、それは元の質問では有用な情報でした。
マイケルハンプトン

2

-o StrictHostKeyChecking=no known_hostsファイルにホストがまだ存在しない場合にのみ機能します。

vmのクローニングが原因でホストキーが変更されることが予想される場合は、このようなホストを無視するようにすれば、よりクリーン(警告なし)になると思います。

# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
    ssh-keygen -R ${host_ip}
    echo ${host_key} >>  ~/.ssh/known_hosts
}

# connect as normal way
ssh root@${host_ip} "hostname"

2

一部の人々はそれが正しくないと言います、あなたはこれを行うなどしてはいけませんが、組み込みデバイスのカップルを何度もテストするためにもこれが必要です。無効StrictHostKeyChecking=noにする必要があります、これは正しいですが、既知のホストファイルをにリセットします/dev/null。ここでは、自動ログインおよびpsリモートデバイス上の例です。

sshpass -p pass ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host 'ps ax'

-2

すべてのサーバーにログインし(RedHatの場合)rm -f /etc/ssh/ssh_host_*、SSHDを再起動します。

これにより、無視する必要のない新しいSSHホストキーが作成されます。

複数のサーバーに複製されたSSHキーが望ましいだけでなく、警告もスローされないインスタンスを1つだけ考えることができます。1つのAレコードの倍数。Aレコードを持つすべてのホストには同じキーがあります。


6
この答えは間違っています。指紋はクライアント上でローカルです。
89c3b1b8-b1ae-11e6-b842-48d705
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.