sshコマンドで再試行パスワードを無効にする方法


11

最初にsshが返されたときにパスワードが間違っていた場合、sshコマンドでパスワードを入力する機会を1回だけ許可したい

Permission denied (publickey......).

sshにパスワードを1回だけ要求するように指示するフラグはありますか?

の代わりに:

[nir@dhcppc4 ~]$ ssh pokemon@192.168.1.103
pokemon@192.168.1.103's password: 
Permission denied, please try again.
pokemon@192.168.1.103's password: 
Permission denied, please try again.
pokemon@192.168.1.103's password: 
Permission denied (publickey.....).

が欲しいです:

[nir@dhcppc4 ~]$ ssh pokemon@192.168.1.103
pokemon@192.168.1.103's password: 
Permission denied (publickey.....).

ソリューションはクライアント側にある必要があります(たとえば、sshコマンドへのフラグまたはパイプラインを使用)、私はsshd_config、またはその他のシステム構成ファイルに触れることができません。一般的に、LAN内のサーバーにアクセスするサードパーティのソフトウェアを構築しているため(キーを生成したり、システムファイルを構成したりできません)、パスワードはDBに保存されます(したがって、2回目の試行は必要ありません)。そして、私のコードで私は、私が唯一する一つの試みがあると仮定することができます場合はssh/ scpそれは、関連するコードを単純化しますが。


1
答えが示すように、これは変更できますが、なぜ変更したいのですか?人々はタイプミスを頻繁に行い、デフォルトはそのような脆弱性を許容するように設定されています。よりよい質問は、「n回のログイン試行に失敗したユーザーをどのようにロックアウトするか」です。特に、悪意のあるログインからの保護を検討している場合。
— msw 2013

私の理由は複雑で長いです。私が言えることは、最初にパスワードが正しくなかった場合、それ以降も正しくないということです。
— 2013

2
最も基本的なシステム管理機能(認証)を実行したいのですが、システム構成ファイルを変更できませんか?あなたは運が悪い。長くて複雑な理由を説明したい場合は、XY問題で提示したYではなくXが表示される可能性があります
— msw

1
これが問題であると私が見る唯一の方法は、パスワード認証を非対話的に実行している場合です。この場合、そのために使用しているユーティリティには、1つのパスワードが失敗した後に中止する機能が必要です。、そのユーティリティがこの質問の主題になるはずです。
— サミッチ2013

1
私はまた、sshが公開鍵認証の試行の失敗に気付いていることに気づきました。公開鍵をコピーして完全に回避することを検討しましたか?
— サミッチ2013

回答:


14

sshd configのmanページでman 5 sshd_config:

 MaxAuthTries
     Specifies the maximum number of authentication attempts permitted
     per connection.  Once the number of failures reaches half this
     value, additional failures are logged.  The default is 6.

したがって、の設定MaxAuthTries 2が必要な設定になります。sshd後で再起動する必要があります(rootとして実行する必要があります):

/etc/init.d/ssh restart 

または

service ssh restart

クライアント側では、これはssh設定で設定できます(man 5 ssh_config適用できる設定を確認してください):

 NumberOfPasswordPrompts
         Specifies the number of password prompts before giving up.  The
         argument to this keyword must be an integer.  The default is 3.

だからあなたの~/.ssh/configファイルを編集して追加してください:

 Host <name_or_ip_of_host|*>
     NumberOfPasswordPrompts 1

どこに<name_or_ip_of_host|*>コマンドラインで、または使用している標準的なIPまたはホスト名*すべてのホスト接続試行のために。/.ssh/configファイルを編集せずにコマンドラインでこれを指定することもできます。

  ssh -o NumberOfPasswordPrompts=1 user@hostname 

質問の編集をご覧ください。変更を加えずに、フラグ/パイプラインを使用したかったsshd_config
— Nir

クライアント側のオプションを指定して、私の回答を編集しました。
— Drav Sloan 2013

0

のMaxAuthTriesをご覧くださいsshd_config。デフォルトは6であるため、値を選択するときにパスワード認証を試行する前に、pubkey認証を試行している可能性があることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.