如何禁用 ssh 命令中的重试密码

如何禁用 ssh 命令中的重试密码

我希望 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 中服务器的第 3 方软件(因此我无法生成密钥或配置系统文件),因此密码保存在数据库中(因此不需要第二次尝试)。在我的代码中,如果我能够假设我只有一次尝试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

查看 中的 MaxAuthTries sshd_config。默认值为 6,因此请记住,在选择值时,您可能会先尝试 pubkey 身份验证,然后再尝试密码身份验证。

相关内容