web-dev-qa-db-ja.com

sshが許可を求めるのを避ける方法は?

RACインストール用にOracleノードのインストールを高速化しようとしています。これには、sshをインストールして構成し、パスワードの入力を求めないようにする必要があります。

問題は:最初の使用時に、

RSA key fingerprint is 96:a9:23:5c:cc:d1:0a:d4:70:22:93:e9:9e:1e:74:2f.
Are you sure you want to continue connecting (yes/no)? yes

それを回避する方法はありますか、またはすべてのサーバーからすべてのサーバーに少なくとも1回は手動で接続する運命にありますか?

70

2019年12月の更新:

Chris Adamsが以下で指摘しているように、この回答が書かれてから6.5年の間に、Openshにかなり大きな変更があり、以下の元のアドバイスよりもはるかに安全な新しいオプションがあります。

* ssh(1): expand the StrictHostKeyChecking option with two new
   settings. The first "accept-new" will automatically accept
   hitherto-unseen keys but will refuse connections for changed or
   invalid hostkeys. This is a safer subset of the current behaviour
   of StrictHostKeyChecking=no. The second setting "off", is a synonym
   for the current behaviour of StrictHostKeyChecking=no: accept new
   Host keys, and continue connection for hosts with incorrect
   hostkeys. A future release will change the meaning of
   StrictHostKeyChecking=no to the behaviour of "accept-new". bz#2400

したがって、StrictHostKeyChecking noファイルにssh_configを設定する代わりに、StrictHostKeyChecking accept-newを設定します。


StrictHostKeyChecking noファイルに/etc/ssh/ssh_configを設定します。これは、サーバー上のすべてのユーザーが使用するグローバルオプションになります。または、~/.ssh/configファイルに設定します。このファイルは、現在のユーザーのみのデフォルトになります。または、コマンドラインで使用できます。

ssh -o StrictHostKeyChecking=no -l "$user" "$Host"

これが man ssh_config からどのように機能するかについての説明は次のとおりです(または この最新バージョン を参照):

StrictHostKeyChecking

      このフラグが「はい」に設定されている場合、sshはホストキーを$HOME/.ssh/known_hostsfileに自動的に追加せず、そのホストへの接続を拒否しますホストキーが変更されました。これにより、トロイの木馬攻撃に対する最大限の保護が提供されますが、/etc/ssh/ssh_known_hostsfileのメンテナンスが不十分である場合や、新しいホストへの接続が頻繁に行われる場合は、煩わしい場合があります。このオプションにより、ユーザーはすべての新しいホストを手動で追加する必要があります。このフラグが「いいえ」に設定されている場合、sshは自動的に新しいホストキーをユーザーの既知のホストファイルに追加します。このフラグが「ask」に設定されている場合、ユーザーが本当にやりたいことを確認した後にのみ、新しいホストキーが既知のホストファイルに追加され、sshHostキーが変更されたホストへの接続を拒否します。既知のホストのホストキーは、すべての場合に自動的に検証されます。引数は、「はい」、「いいえ」、または「質問」でなければなりません。デフォルトは「質問」です。
101
Tim Kennedy

ssh-keyscan-SSH公開鍵を収集します

接続するホストのリストがすでにわかっている場合は、次のコマンドを発行できます。

ssh-keyscan Host1 Host2 Host3 Host4

-Hオプションを指定すると、sshのデフォルトのように結果をハッシュ化できます。

また、-t keytype was keytype is dsarsa、またはecdsaを指定できます。デフォルトの代わりに取得するキー。

ssh-keyscanを実行すると、既知のホストファイルが事前に入力されているため、sshで新しいキーを追加する許可を求める必要はありません。

29
kurtm

各サーバーのknown_hostsにフィンガープリントを追加できます。シングルユーザーの場合:

cat ~/.ssh/known_hosts
echo "$SERVER,$PORT ssh-rsa $SERVER_KEY_FINGERPRINT" >> ~/.ssh/known_hosts
12
David Souther

ホストを無視

HostKeyCheckingは無視してください。このために私は使用します:

ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null [email protected]

ホストを追加

最初の接続の前に、ホスト/サーバーのフィンガープリントを.ssh/known_hostsに追加します。これがより安全な方法です。

11
xebeche

試す前に次のスニペットを実行してください。

mkdir -p ~/.ssh     
echo "Host *" > ~/.ssh/config     
echo " StrictHostKeyChecking no" >> ~/.ssh/config

ps:運用サーバーには厳密に適用されません。ManInMiddleに注意してください

3
147.3k

試す前に次のスニペットを実行してください。

mkdir -p ~/.ssh  &&  echo "Host *" > ~/.ssh/config && echo " StrictHostKeyChecking no" >> ~/.ssh/config

ps:運用サーバーには厳密に適用されません。ManInMiddleに注意してください

私は1回限りのタイプのTimの回答が好きですが、これが定期的に接続する予定のホストである場合は、〜/ .ssh/configにエントリを作成します(ファイルが存在しない場合は作成します)。

# this example shows wildcard for IP
# you can even use more than one wildcard 10.0.*.* for example
Host 192.168.56.*
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
# you can even alias it, which is really useful when scp'ing/rsyncing foo:/path/to/remote
Host foo
    HostName foo-long-192-10-135-55.hostname.not-going-to-remember.doh
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
0
Jaime