web-dev-qa-db-ja.com

Linux上のSSH:ローカルサブネット(known_hosts)上のホストのホストキーチェックを無効にする

IPアドレスのシステムが頻繁に変更されるネットワークで作業しています。それらはワークベンチの内外に移動され、DHCPは取得するIPを決定します。

システムに接続する必要があるたびに〜/ .ssh/known_hostsを編集する必要がないように、ホストキーのキャッシュ/チェックを無効にする方法は簡単ではないようです。

私はホストの信憑性については気にしません、それらはすべて10.x.x.xネットワークセグメント上にあり、だれもMITMを使用していないことが比較的確実です。

これを行う「適切な」方法はありますか?警告が出てもかまいませんが、毎回停止してそのIPのknown_hostsエントリを毎回フラッシュさせるのは面倒で、このシナリオではシステムに1回または2回以上接続することはほとんどないため、実際にはセキュリティは提供されません。次に、IPが別のシステムに割り当てられます。

Ssh_configファイルを調べたところ、外部マシンへの接続のセキュリティを維持し、ローカルアドレスのチェックを無視できるようにグループを設定できることがわかりました。これが最適です。

検索から、この問題について非常に強力な意見が見つかりました。「それを台無しにしないでください。セキュリティのためです。対処するだけです」から、「これは今まで対処しなければならなかった最も愚かなことです。オフにしたい」...私は真ん中のどこかにいます。数分おきにファイルからアドレスを削除しなくても、自分の仕事ができるようにしたいだけです。

ありがとう。

42
C4colo

これは、常に変化するEC2ホストに使用する構成です。

maxim@maxim-desktop:~$ cat ~/.ssh/config 
Host *amazonaws.com
        IdentityFile ~/.ssh/keypair1-openssh
        IdentityFile ~/.ssh/keypair2-openssh
        User ubuntu
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null

これにより、ホストの確認が無効になりますStrictHostKeyChecking noまた、ニースハックを使用して、sshがホストIDを永続ファイルに保存しないようにしますUserKnownHostsFile /dev/null追加の値として、ホストへの接続に使用するデフォルトのユーザーと、いくつかの異なる識別秘密鍵を試すオプションを追加したことに注意してください。

88
Maxim Veksler

OpenSSHを使用していると仮定すると、

CheckHostIP no

既知のホストでホストIPがチェックされないようにするオプション。 manページから:

CheckHostIP

このフラグが「yes」に設定されている場合、ssh(1)はさらに、known_hostsファイルのホストIPアドレスをチェックします。これにより、sshはDNSスプーフィングが原因でホストキーが変更されたかどうかを検出できます。オプションが 'no'に設定されている場合、チェックは実行されません。デフォルトは「yes」です。

10
Jim Garrison

これを見つけるのにしばらく時間がかかりました。私が見た最も一般的なユースケースは、リモートネットワークへのSSHトンネルがある場合です。ここでのすべてのソリューションは、私のNagiosスクリプトを破壊する警告を生成しました。

私が必要としたオプションは:

NoHostAuthenticationForLocalhost yes

これは、名前が示すように、localhostにのみ適用されます。

8
richo

これを一時的に、またはSSH構成ファイルを変更する必要なしに無効にしたい場合は、以下を使用できます。

ssh -o UserKnownHostsFile=/dev/null username@hostname
2
qwertzguy

他のすべての回答はキーチェックを無効にする方法を説明しているため、キーチェックを保持しながら問題を回避する2つのアイデアを次に示します。

  1. ホスト名を使用します。 DHCPサーバーを制御し、適切な名前を割り当てることができれば、これは簡単です。その後、既知のホスト名を使用できますが、IPの変更は問題ではありません。

  2. ホスト名を使用します。 DHCPサーバーを制御していない場合でも、avahiのようなサービスを使用できます。これにより、ローカルネットワークでサーバーの名前がブロードキャストされます。衝突やその他の問題を解決します。

  3. ホスト鍵署名を使用します。マシンを構築したら、ローカルCAでマシンに署名します(そのためのグローバルな信頼されたCAは必要ありません)。その後は、マシン上の各ホストを個別に信頼する必要はありません。 known_hostsファイルの署名CAを信頼するだけで十分です。 ssh-keygenのマニュアルページまたは多くのブログ投稿の詳細情報( https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate -hosts-and-clients-with-ubunt

1
viraptor