如何配置 SSHD 以允许用户无需密码或公钥即可进行 ssh?

如何配置 SSHD 以允许用户无需密码或公钥即可进行 ssh?

我只想允许一个用户公开,即让人们无需输入密码或设置公钥即可登录。这是为了创建一个开放的 SSH 应用程序。它应该很简单,但似乎不起作用,这是我的 sshd_config:

UsePAM no
Match User app
        X11Forwarding no
        AllowTcpForwarding no
        # PermitTTY no
        PermitEmptyPasswords yes
        AuthenticationMethods none
        ForceCommand myapp

当我尝试以客户端身份 ssh 时,系统会提示我输入密码:

[email protected]'s password:
Permission denied, please try again.

我已经尝试过一些变化但没有运气。

谢谢。

答案1

初步说明

  1. 启动提升的 shell ( sudo -i) 并保持其打开状态。如果出现问题,请使用提升的 shell 恢复更改。
  2. 制作sudo cp -a …您要修改的文件的副本 ( )。
  3. 最后确保您能够重新登录并sudo重新进行身份验证。然后才关闭升高的外壳。

解决方案 – 第 1 部分:/etc/ssh/sshd.conf

将您配置sshd为使用 PAM 及其键盘交互式身份验证,而不是由其sshd自身管理的密码身份验证。最简单的方法是无条件地为所有用户执行此操作。在/etc/ssh/sshd.conf

UsePAM yes
PasswordAuthentication no
KbdInteractiveAuthentication yes
#...

笔记:

  • 使用每个参数的第一个获得的值。

  • ChallengeResponseAuthentication是 的已弃用别名,因此请确保文件中KbdInteractiveAuthentication没有较早的名称。ChallengeResponseAuthentication no

  • PasswordAuthenticationKbdInteractiveAuthentication可以放在 后面Match User …,这样您就可以对用户进行键盘交互式身份验证app,并对其他人进行常规密码身份验证;但UsePAM它是全球性的。该片段可能如下所示:

    UsePAM yes
    Match User app
          PasswordAuthentication no
          KbdInteractiveAuthentication yes
    Match All
    PasswordAuthentication yes
    KbdInteractiveAuthentication no
    

sshd修改文件后重新启动或重新加载(例如在Debian中sudo systemctl reload ssh.service:)。


解决方案 – 第 2 部分:/etc/pam.d/common-auth/etc/pam.d/sshd

两种方法:

  • 如果您想始终自动验证用户身份app,请修改/etc/pam.d/commmon-auth.
  • 如果您只想在涉及app时自动验证用户身份,则修改但不修改。sshd/etc/pam.d/sshd/etc/pam.d/commmon-auth

在实践中,您应该修改/etc/pam.d/commmon-auth/etc/pam.d/sshd。修改它们都太过分了。


解决方案 - 第 2a 部分:/etc/pam.d/common-auth

要将 PAM 配置为始终自动验证用户,请在包含in 的(已存在)行之前app添加一行包含。该文件应如下所示:pam_succeed_if.sopam_unix.so/etc/pam.d/common-auth

# [...]
auth [success=2 default=ignore] pam_succeed_if.so user = app
auth [success=1 default=ignore] pam_unix.so nullok
# [...]
auth requisite pam_deny.so
# [...]
auth required pam_permit.so
# [...]

这是修改后的方法这个另一个答案,那里有解释。我放置在pam_succeed_if第一位,因此用户app无需经过处理(提示输入密码)即可进行身份验证pam_unix

app无论什么工具请求身份验证,这都会自动对用户进行身份验证;例如其他用户将能够su app自由地使用。如果您想app仅在sshd请求时自动验证用户身份,那么您需要修改/etc/pam.d/sshd;继续阅读。


解决方案 - 第 2b 部分:/etc/pam.d/sshd

要将 PAM 配置为在涉及时自动对用户进行身份验证,请在 中(已存在)之前添加app两行。文件的开头应如下所示:sshd@include common-auth/etc/pam.d/sshd

# [...]

auth [success=1 default=ignore] pam_succeed_if.so user != app
auth sufficient pam_permit.so

# Standard Un*x authentication.
@include common-auth

# [...]
[...]

相关内容