web-dev-qa-db-ja.com

IPが頻繁に変更されるボックスにSSH接続する

IPを頻繁に変更するクラウドボックスがいくつかあります。

ホスト名を使用してsshを実行しますが、このエラーメッセージのためにサーバーが起動するたびにknown_hostsファイルを編集する必要があります。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 the RSA Host key has just been changed.
The fingerprint for the RSA key sent by the remote Host is…

セキュリティリスクなど、やりたいことに関連するものは別にして、このエラーを無視するか、known_hostsファイルを自動的に上書きして、常に自分で編集する必要がないようにする方法はありますか?

24
coneybeare

Ssh_configファイルを編集し、次の行を変更して追加します。

CheckHostIP no

CheckHostIPのデフォルトは「yes」です。これは、失敗している種類のチェックのみを実行することです。これをオフにすると、IPが可変であることが信頼され、ホスト名に対するキーチェックが行われます。

21
sysadmin1138

追加:that nameのCheckHostIPチェックを無効にすることのみを試みることができます:

Host *
  [ global settings .. ]

Host very.dynamic.Host
  CheckHostIP no
25

ここでの答えの多くは機能しますが、技術的には回避策です。 OpenSSHには、これを念頭に置いた組み込みの機能がすでにあります:HostKeyAlias


.ssh/configファイルで、HostKeyAlias <alias>をホスト構成に追加します。

Host myserver.example.com
HostKeyAlias myserver.example.com

これにより、サーバーmyserver.example.comへの接続では、ホスト名またはを使用せず、ローカル参照にIPアドレスを使用します-常にonlyそのサーバーに接続するときに、指定されたHostKeyAliasを使用します。私にとっては、ホスト名を使用することは理にかなっています-もちろん、好きなエイリアスを使用することもできます。


動的ホストの私自身の典型的な設定は次のとおりです:

Host myserver
hostname myserver.dyn.example.com
HostKeyAlias myserver.private.example.com

これは、サーバーの多くが同じホストキーを持っていることがわかっているいくつかのあいまいなシナリオでも使用できます(通常、これはであるはずです。これにより、エントリの重複を防ぐことができます。今後、キーが正当に変更された場合、複数のエントリを置き換えたり削除したりする必要はありません。唯一。 Gitlab Geoサーバーはこの良い例です。


Known_hostsファイルのクリアに関しては、古くなったknown_hostsエントリの維持/削除に特に関連する他の質問/回答を確認することをお勧めします。たとえば、 私の.ssh/known_hostsファイルを管理する方法 を参照してください。私は特にuser1953828の回答に感銘を受けましたが、(まだ)賛成票は多くないようです。 :)

4
zaTricky

この問題を回避するには、これらの危険なオプションを使用します。 (私のホストの公開鍵は頻繁に再生成されるため、これによりIPと鍵のチェックが削除されます)

ssh remoteServerName -l username -o "UserKnownHostsFile=/dev/null"

キーは同じままでIPが変更されている場合も、これを使用できます。

ssh remoteServerName -l username -o "CheckHostIP=no"
2
Zv_oDD

StrictHostKeyChecking = noをssh client構成(つまり、接続元のマシンの〜/ ssh/configファイル)に設定して、警告を無視できます。

1
hayalci

あなたはCheckHostIP no~/.ssh/configファイルですが、スプーフィング攻撃の可能性があります。それが気にならない場合は、この設定でknown_hosts 小切手。

1
Steven Monday

一時的なAWSマシンに接続するときに、known_hostsファイルにフィンガープリントを追加しないようにします。私は次のようなコマンドを使用します

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i secret.pem [email protected]

それらに接続します。マシンを「既知のホストのリスト」に追加するかどうかは尋ねられません。 10.0.0.5をマシンのIPアドレスに置き換え、secret.pemをSshキーの完全パスに置き換えます。 10.0.0.5が追加されたという警告が表示されますが、/dev/nullには完全に消えています。私は自分の~/.profileにエイリアスを設定するのに十分な頻度でこれを行っています

alias awsssh='ssh -i secret.pem -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

フィンガープリントをチェックするというトラブルに遭遇した場合は、ssh [email protected]タイプのコマンドをマシン用に予約します。

0
Hbar