设置

设置

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


设置

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

    $ groups testuser
    testuser : testuser ssh-users
    
  • testuser正在尝试通过连接ssh testuser@<server_ip>并输入密码。

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

问题

  • testuser 设置时连接AllowUsers

    AllowUsers user1 user2 testuser
    
  • testuser不是AllowGroups为其组设置时连接:

    AllowUsers user1 user2
    AllowGroups ssh-users
    

    这会导致在 ssh 密码提示中输入他们的密码Permission denied, please try again.testuser


问题

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

答案1

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

根据sshd_config 手册页

允许/拒绝指令按以下顺序处理 :DenyUsers,,,最后。AllowUsersDenyGroupsAllowGroups

因此,解决您的问题的方法可能是使用其中一个,如果您首选以组的方式管理用户,则可能是使用组访问指令。

答案2

以下是我们发现的一个有效的解决方案:

AllowUsers user1 user2
Match group ssh-users
    AllowUsers *

答案3

Jeff 的回答详细地涵盖了问题的细节,但我发现这个问题看起来AllowUsers有点AllowGroups不同。我想限制来自特定子网的组 (ssh) 中用户的传入连接。

连接规则sshd_配置PATTERNS是一个过滤器——随着每个附加规则的应用,可接受的用户集只能减少。ssh_配置(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

答案4

在防火墙中,将按顺序检查规则,直到找到匹配项,然后允许连接,否则拒绝连接。

在 sshd_config 中检查所有规则,如果源符合两个或三个条件,并且其中一个条件不允许,则它无权访问。

在此示例中,我是管理员:

我的sshd_配置:

AllowUsers  admin
Match Address IP1, IP2, IP3, MyIP
 AllowUsers user1
 ChrootDirectory %h

MyIP 在第二部分,所以我无法登录。

我必须从第二部分删除 MyIp。

如果我在第二部分添加我的用户,我将受到 ChrootDirectory 的限制

相关内容