如何在 sshd_config 中同时使用 AllowGroups 和 AllowUsers?

Joh*_*nes 32 debian ssh

我正在尝试/etc/ssh/sshd_config在我的专用 debian7 服务器上使用AllowUsersAllowGroups. 但是我似乎无法让两者一起工作。


设置

  • 有一个用户叫testuser
  • 该用户位于名为 的组中ssh-users

    $ groups testuser
    testuser : testuser ssh-users
    
    Run Code Online (Sandbox Code Playgroud)
  • testuser正在尝试通过连接ssh testuser@<server_ip>并输入他们的密码。

  • 我的sshd_config可以在这里找到:http : //pastebin.com/iZvVDFKL - 我认为基本上我对默认所做的唯一更改是:
    • 设置 PermitRootLogin no
    • 并添加两个用户AllowUsers(实际用户名在我的服务器上不同)
  • service ssh restart每次修改后都会运行sshd_config

问题


问题

  • 是否AllowUsers覆盖AllowGroups
  • 在不手动添加用户名的情况下解决此问题的最佳方法是AllowUsers什么?理想情况下,我希望ssh-users将来能够将用户添加到组中而无需sshd_config再次接触。

Jef*_*eOS 29

是的,AllowUsers优先于AllowGroups. 如果指定,则只有与 中指定的模式匹配的用户才能AllowUsers连接到 SSHD 实例。

根据手册sshd_config

的允许/拒绝的指令在下列顺序处理: DenyUsersAllowUsersDenyGroups,和最后AllowGroups

因此,您的问题的解决方案可能是使用一种或另一种方式,如果组是您管理用户的首选方式,则可能使用组访问指令。

  • 如果所有这三个都是您系统上的组,它应该可以工作。如果 user1 和 user2 只是用户,您可以将它们添加到 ssh-users,并使用 AllowGroups ssh-users。 (2认同)

小智 8

这是我们发现有效的解决方案:

AllowUsers user1 user2
Match group ssh-users
    AllowUsers *
Run Code Online (Sandbox Code Playgroud)


bja*_*ski 7

杰夫的回答涵盖详见问题的细节,但我发现这个问题,希望使用AllowUsersAllowGroups略有不同的场景。我想限制来自特定子网的组 (ssh) 中的用户的传入连接。

sshd_config中的连接规则是一个过滤器 - 随着每条附加规则的应用,只能减少可接受的用户集。PATTERNSssh_config(5) 中解释这些规则的形式。

此外,根据AllowUsers部分sshd_config

如果模式采用 USER@HOST 的形式,则分别检查 USER 和 HOST,将登录限制为来自特定主机的特定用户。HOST 标准可能还包含要以 CIDR 地址/掩码格式匹配的地址。

AllowGroups 不接受 USER@HOST 表单。

因此,要接受 1) ssh 组中的用户和 2) 来自特定子网/主机的用户:

AllowUsers *@192.168.1.0/24 *@*.example.com *@1.2.3.4
AllowGroups ssh
Run Code Online (Sandbox Code Playgroud)

  • @AndrewD AllowGroups 只接受组名 - 例如你不能做`AllowGroups ssh@example.com`。HOST 是源,您从哪里进行 ssh。 (2认同)