我有一个sshd_config
文件配置为不允许组中的用户nologin
进入ssh
此服务器 ( DenyGroups nologin
)。虽然我在这个组中有几个用户,但我确实想为其中一个用户(我们称之为用户greg
)覆盖此设置。
我尝试添加AllowUsers greg
文件sshd_config
,但似乎不起作用。可以这样做吗?
sshd_config 如下所示:
AllowTcpForwarding no
ClientAliveCountMax 1
ClientAliveInterval 300
LoginGraceTime 1m
PermitRootLogin no
Protocol 2
RSAAuthentication no
Subsystem sftp /usr/libexec/openssh/sftp-server
UsePAM yes
X11Forwarding yes
DenyGroups nologin
LogLevel INFO
MaxAuthTries 4
IgnoreRhosts yes
HostBasedAuthentication no
PermitEmptyPasswords no
PermitUserEnvironment no
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
添加“AllowUsers greg”(greg 是登录组的成员)不允许 greg 使用 ssh。
答案1
手册页sshd_config(5)
描述了这些选项的行为,如下所示:
如果指定,仅允许/禁止其主要组或补充组列表或名称与其中一种模式匹配的用户/组登录。只有组名有效;数字组 ID 不被识别。默认情况下,所有组都允许登录。允许/拒绝指令按以下顺序处理:拒绝用户,允许用户,拒绝群组,最后允许群组。
这暗示如果你只定义这两个选项,它应该对您有用。您可能使用了一些其他选项,这些选项会干扰您的设置。您可以发布您正在使用的整个配置吗?
答案2
对我来说这似乎很简单,只需将其greg
从nologin
群组中删除即可。
答案3
你不能这样做,因为全部sshd
在做出最终决定之前,指令会被评估。因此,尽管greg
被允许AllowUsers
,但后来被DenyGroups
匹配他所在的组拒绝。手册在这里有些不具体,因为它没有提到所有指令都按照 Jakuje 描述的顺序进行评估,所以我在备用系统的 OpenSSH 5.2p1 中尝试了这一点。事实上,评估顺序应该是相反的(首先允许/拒绝组,然后允许/拒绝用户)。至少对我来说,这会更有意义。