在sshd_config中覆盖DenyGroups

我有一个sshd_config文件,configuration为不允许组nologin用户ssh进入此服务器( DenyGroups nologin )。 虽然我在这个组中有几个用户,但我确实希望为其中一个用户覆盖(我们称之为用户greg )。

我尝试添加AllowUsers gregsshd_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是login组的成员)不允许greg到ssh。

sshd_config(5)手册页描述了这些选项的行为,如下所示:

如果指定, 则仅允许主要组或补充组列表或名称与其中一种模式相匹配的用户/组进行login。 只有组名是有效的; 数字组ID不被识别。 默认情况下,所有组都允许login。 allow / deny指令按以下顺序处理: DenyUsersAllowUsersDenyGroups ,最后AllowGroups

这暗示如果你只定义这两个选项,它应该为你工作。 您可能使用其他一些干扰您的设置的选项。 你可以发布你正在使用的整个configuration?

似乎直接向我,只是删除nologingreg

你不能这样做,因为在sshd做出最终决定之前, 所有的指令都要被评估。 因此,虽然gregAllowUsers ,但后来DenyGroups与它所在的组匹配被拒绝了。这里的手册有些不明确,因为它没有提到所有的指令都是按照Jakuje所描述的顺序来计算的,所以我尝试过这在OpenSSH 5.2p1上是一个备用系统。 事实上,评估顺序应该是相反的(首先允许/拒绝组,下一个允许/拒绝用户)。 至less对我来说,这会更有意义。