
sshコマンドがパスワードを一度だけ入力できるようにしたいと思います。最初にパスワードが間違っていると、sshが返されます。
Permission denied (publickey......).
sshにパスワードを一度だけ要求するように指示するフラグはありますか?
変える:
[nir@dhcppc4 ~]$ ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied (publickey.....).
私の考えでは:
[nir@dhcppc4 ~]$ ssh [email protected]
[email protected]'s password:
Permission denied (publickey.....).
解決策はクライアント側になければなりません(たとえば、sshコマンドにいくつかのフラグまたはパイプを使用するなど)。この部分sshd_config
または他のシステム構成ファイルに触れることはできません。通常、私はLAN上のサーバーにアクセスするサードパーティ製のソフトウェアを構築しているので(キーを生成したりシステムファイルを設定したりすることはできません)、パスワードはデータベースに保存されます(したがって2回目の試みは不要です)。私のコードで一度だけ試すことができると仮定すると、ssh
関連するscp
コードが単純化されます。
答え1
SSHd 構成マニュアルページから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
答え2
sshd_config
MaxAuthTries の表示 デフォルトは 6 なので、公開鍵認証を最初に試してから、パスワード認証を試行できる値を選択するときに注意してください。