我可以在客户端禁用 ssh 密码验证吗?

我可以在客户端禁用 ssh 密码验证吗?

我正在连接到一个 SSH 服务器,但我无法完全控制 sshd 配置。服务器允许公钥身份验证和密码身份验证,但我想阻止我的 SSH客户即使公钥身份验证失败,也不会切换到密码身份验证。

我尝试添加PasswordAuthentication no到服务器条目,~/.ssh/config但没有明显的效果。

有可能吗?

我了解这不会提供任何额外的安全性。我这样做只是为了用户体验目的,以避免某些应用程序陷入等待密码的情况。

答案1

ssh如果处于批处理模式,则不会提示:

ssh -oBatchMode=yes you@theotherhost command

你可以设置

alias ssh /usr/bin/ssh -oBatchMode=yes

在您的中.bashrc,这将禁用客户端对交互式会话的密码身份验证。 (除非你这样做/us/bin/ssh

更详细的方案可能是:

  • 确保/usr/local/binPATH之前/usr/bin
  • 创建一个文件/usr/local/bin/ssh
#!/bin/bash
/usr/bin/ssh $*
  • chmod a+rx /usr/local/bin/ssh

然而,这一切都不是万无一失的。

答案2

客户端命令或~/.ssh/config

在这里您可以找到适合您的解决方案的一些可能性

禁用当前 ssh 连接尝试的密码身份验证

要禁用当前 ssh 连接尝试的密码身份验证,请在命令行上传递此选项: -o PasswordAuthentication=no

要禁用与任何主机的所有未来连接的密码身份验证,请将以下内容添加到 ~/.ssh/config 中: PasswordAuthentication no

在命令行(或 ~/.ssh/config)上,您可以设置 PreferredAuthentications。 PreferredAuthentications=publickey

如何禁用 ssh 客户端的密码提示?

执行此操作的规范方法是使用 BatchMode 选项:

ssh -o BatchMode=yes …

远程/服务器端/etc/ssh/sshd_config

如果不想使用密码,您可以在/etc/ssh/sshd_config远程计算机上进行更改PasswordAuthentication no

sshd_config 远程机器中的一些常规设置:

PermitRootLogin no          # No root login
PasswordAuthentication no   # No password login
PermitEmptyPasswords no     # No empty password
PubkeyAuthentication yes    # login with public key

编辑后重新启动您的服务

相关内容