我希望 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 身份验证,然后再尝试密码身份验证。