公開鍵認証を使用して複数のサーバーにSSH接続するスクリプトがあります。構成の問題により、サーバーの1つがスクリプトのログインを停止しました。つまり、スクリプトが「パスワード:」プロンプトでスタックし、応答できないので、残りのサーバーは試行しません。リストにあります。
キー認証が失敗した場合にパスワードを要求せず、接続エラーを報告してスクリプトを続行させるようにsshクライアントに指示する方法はありますか?
OpenSSHにはBatchModeがあり、パスワードプロンプトを無効にするだけでなく、キーのパスフレーズのクエリを無効にする必要があります。
BatchMode
「yes」に設定すると、パスフレーズ/パスワードのクエリは無効になります。このオプションは、パスワードを入力するユーザーがいないスクリプトやその他のバッチジョブで役立ちます。引数は「はい」または「いいえ」でなければなりません。デフォルトは「いいえ」です。
使用例:
ssh -oBatchMode=yes -l <user> <Host> <dostuff>
現在のSSH接続試行のパスワード認証を無効にするには、コマンドラインでこのオプションを渡します。
-o PasswordAuthentication=no
ホストへの今後のすべての接続でパスワード認証を無効にするには、~/.ssh/config
に以下を追加します:
PasswordAuthentication no
一部のホストでのみ無効にするには、以下を〜/ .ssh/configに追加します:
Host host1 Host2 Host3...
PasswordAuthentication no
上記のオプションはout-going ssh接続、つまりリモートsshサーバーに接続しようとしている場所に適用されます。
Sshサーバーでパスワード認証を無効にするには(つまり、すべてのincoming ssh接続に適用されます)、PasswordAuthentication no
を/etc/ssh/sshd_config
に追加し、sshd
を再起動します。
Dropbearを使用している場合は、「-s
"パスワード認証を無効にするオプション。
コマンドライン(または~/.ssh/config
)PreferredAuthentications
を設定できます。
PreferredAuthentications=publickey