web-dev-qa-db-ja.com

公開鍵認証が失敗した場合、パスワードの入力を求めるのではなく、sshを失敗させるにはどうすればよいですか?

公開鍵認証を使用して複数のサーバーにSSH接続するスクリプトがあります。構成の問題により、サーバーの1つがスクリプトのログインを停止しました。つまり、スクリプトが「パスワード:」プロンプトでスタックし、応答できないので、残りのサーバーは試行しません。リストにあります。

キー認証が失敗した場合にパスワードを要求せず、接続エラーを報告してスクリプトを続行させるようにsshクライアントに指示する方法はありますか?

110
rjmunro

OpenSSHにはBatchModeがあり、パスワードプロンプトを無効にするだけでなく、キーのパスフレーズのクエリを無効にする必要があります。

BatchMode

「yes」に設定すると、パスフレーズ/パスワードのクエリは無効になります。このオプションは、パスワードを入力するユーザーがいないスクリプトやその他のバッチジョブで役立ちます。引数は「はい」または「いいえ」でなければなりません。デフォルトは「いいえ」です。

使用例:

ssh -oBatchMode=yes -l <user> <Host> <dostuff>
145
  • 現在の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を再起動します。

24
cas

Dropbearを使用している場合は、「-s "パスワード認証を無効にするオプション。

12
sybreon

コマンドライン(または~/.ssh/configPreferredAuthenticationsを設定できます。

PreferredAuthentications=publickey
8
Rory