【问题标题】:sshd with multiple match sections, override settings具有多个匹配部分的 sshd,覆盖设置
【发布时间】:2012-06-05 11:32:19
【问题描述】:

我的情况是 sshd 应该只允许 sftp 访问一组用户。

这很容易通过添加一个匹配部分来完成

Match Group groupname
    ChrootDirectory /srv/ftp
    ForceCommand internal-sftp

现在我需要排除一个属于该组的用户。他应该有正常的 shell 访问权限。

Match User username
    ChrootDirectory ???
    ForceCommand ???

我在这里设置什么? 是否可以取消设置先前使用另一个匹配部分设置的配置指令?

【问题讨论】:

    标签: configuration ssh sshd


    【解决方案1】:

    不要添加Match User 部分。相反,通过从原始匹配中排除用户来排除用户。

    Match Group groupname User !username
        ChrootDirectory /srv/ftp
        ForceCommand internal-sftp
    

    必须满足Match 行上的所有条件才能应用该部分。

    我不确定确切的语法。您可能需要引号。

    Match Group groupname User "!username"
        ChrootDirectory /srv/ftp
        ForceCommand internal-sftp
    

    【讨论】:

    • 不需要引号
    • 对于其他偶然发现此问题的人,我只是在阅读bbs.archlinux.org/viewtopic.php?id=121945 之前无法让它工作。结果发现模式匹配中存在错误,您需要执行“匹配组组名,用户 *,!用户名”,在我这样做之后它会立即按预期工作。
    • @NicolasMommaerts 使用 SSH 配置,the doc says "Criteria 可以通过在前面加上感叹号 ('!') 来否定。" 你能做到吗?也用 SSHD 来做这件事? Match Group foo !User bar baz
    【解决方案2】:

    首先将设置应用于组,不包括用户名,然后将(其他)设置应用于用户名。如果您不对用户名使用“ForceCommand”设置,则不会应用。

    Match Group groupname User !username
       ChrootDirectory /srv/ftp
       ForceCommand internal-sftp
    Match User username
       PasswordAuthentication yes
    

    另一个例子是,如果用户从不同的 IP 地址登录,您可能需要不同的设置

    #all users except username1 and username2 default to sftp
    Match User *,!username1,!username2
        PasswordAuthentication yes
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp -f LOCAL0 -l INFO
    
    #normal ssh allowed for users username1 and username2 from the local network
    Match User username1,username2 Address 192.168.0.0/16
        PasswordAuthentication yes
    
    #users username1 and username2 not allowed from other networks
    Match User username1,username2 Address *,!192.168.0.0/16
        PasswordAuthentication yes
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand /usr/sbin/nologin
    

    【讨论】:

    • 您的第二个示例正是我所需要的,因此非常感谢。为了将“坏”用户分组,我引入了一个组,例如,badusersMatch Group badusers Address *,!192.168.0.0/16 PasswordAuthentication no
    【解决方案3】:

    对我有用的是将用户规则放在首位:

    Match user lee
        ChrootDirectory /mnt/s3
        ForceCommand internal-sftp
    
    Match group ftp
        ChrootDirectory /home/%u
        ForceCommand internal-sftp
    

    【讨论】:

      猜你喜欢
      • 2016-03-13
      • 2021-12-12
      • 2016-12-03
      • 2011-09-24
      • 2020-02-12
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 2018-02-01
      相关资源
      最近更新 更多