/etc/ssh/sshd_config
我正在尝试在专用的 debian7 服务器上同时修改AllowUsers
和AllowGroups
。但我似乎无法让两者一起工作。
设置
- 有一个名为 的用户
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
,,,最后。AllowUsers
DenyGroups
AllowGroups
因此,解决您的问题的方法可能是使用其中一个,如果您首选以组的方式管理用户,则可能是使用组访问指令。
答案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 的限制