匹配“sshd_config”中的多个用户

匹配“sshd_config”中的多个用户

我正在尝试将相同的sshd设置应用于多个用户。

根据手册,它的Match User作用似乎是AND

引入条件块。如果满足该行中的所有条件Match,则以下行中的关键字将覆盖配置文件全局部分中设置的关键字

我如何声明“对于这些用户中的任何一个...”,因此在本例中bobjoe、 和phil被允许使用 SSH 作为代理,但不允许登录:

Match User bob, User joe, User phil
    PasswordAuthentication yes
    AllowTCPForwarding yes
    ForceCommand /bin/echo 'We talked about this guys. No SSH for you!'

答案1

我自己没有这样做,我只能按照手册上的内容进行操作:

sshd_config手册中:

匹配模式可以由单个条目或逗号分隔的列表组成,并且可以使用 的模式部分中描述的通配符和否定运算符ssh_config(5)

这意味着你应该能够说

Match User bob,joe,phil
  PasswordAuthentication yes
  AllowTCPForwarding yes
  ForceCommand /bin/echo 'We talked about this guys. No SSH for you!'

请注意,“逗号分隔”意味着名称之间不应插入额外的空格。

另请参阅信息安全论坛上的此答案:在 SSH 中创建用户特定的身份验证方法

答案2

对组而不是用户使用 Match 指令。然后将用户添加到该组中

Match Group users_with_no_ssh
    PasswordAuthentication yes
    AllowTCPForwarding yes
    ForceCommand /bin/echo 'We talked about this guys. No SSH for you!'

答案3

我不确定 ForceCommand 能否与 SFTP 很好地配合使用。另外,也许最好在日志中看到“DenyUsers”一词。无论如何,我使用这个(好吧,也许使用 Group 会更好):

sshd_配置

# support, ansible & backup only from specific IP                                                                    
Match User ansible,backup,support Address *,!176.x.x.x                                                          
      DenyUsers ansible,backup,support

Match User backup
        AllowTcpForwarding yes
        AllowAgentForwarding yes
        PermitListen 127.0.0.1:2223
        AcceptEnv RESTIC_REPOSITORY RESTIC_PASSWORD

测试配置

# sshd -T -C addr=176.x.x.x,user=backup | egrep '^((deny|allow)users|permitlisten|acceptenv)'
denyusers root
acceptenv RESTIC_REPOSITORY
acceptenv RESTIC_PASSWORD
permitlisten 127.0.0.1:2223

# sshd -T -C addr=8.8.4.4,user=backup | egrep '^((deny|allow)users|permitlisten|acceptenv)' 
denyusers ansible,backup,support
acceptenv RESTIC_REPOSITORY
acceptenv RESTIC_PASSWORD
permitlisten 127.0.0.1:2223

真实世界测试

Jan 29 16:50:12 mx1 sshd[71309]: Connection from 199.x.x.x port 21042 on 199.x.x.x port 2222 rdomain "0"   
Jan 29 16:50:13 mx1 sshd[71309]: User support from 199.x.x.x not allowed because listed in DenyUsers
Jan 29 16:50:13 mx1 sshd[71309]: Connection closed by invalid user support 199.x.x.x port 21042 [preauth]

相关内容