sshd 仅第一个匹配 MATCH 配置的替代方案

sshd 仅第一个匹配 MATCH 配置的替代方案

考虑到 openssh (1:7.2p2-4ubuntu2.6在 ubuntu 16.04 上)安装,我发现自己有多个我想要合作的组。我尝试设置组的方式实际上是这样的:

  • 转发端口
    1. 仅转发到本地端口
    2. 上面,加上几个远程端口
    3. 转发“任何”端口
  • 使用权
    1. 仅 SFTP(例如ForceCommand internal-sftp),chrooted
    2. 仅 SFTP,未 chroot
    3. 完整的 shell 访问

我将使用分别命名为pf1pf2pf3acc1acc2、的组acc3

手册页的措辞方式

如果某个关键字出现在多个满足条件的 Match 块中,则仅应用该关键字的第一个实例。

听起来唯一有效的方法就是

Match Group pf1,acc1
  PermitOpen localhost:1234 localhost:2345
  ForceCommand internal-sftp
  ChrootDirectory /somepath
Match Group pf1,acc2
  PermitOpen localhost:1234 localhost:2345
  ForceCommand internal-sftp
Match Group pf1,acc3
  PermitOpen localhost:1234 localhost:2345

Match Group pf2,acc1
  PermitOpen localhost:1234 localhost:2345 remote1:1234 remote2:2345
  ForceCommand internal-sftp
  ChrootDirectory /somepath
Match Group pf2,acc2
  PermitOpen localhost:1234 localhost:2345 remote1:1234 remote2:2345
  ForceCommand internal-sftp
Match Group pf1,acc3
  PermitOpen localhost:1234 localhost:2345 remote1:1234 remote2:2345

Match Group pf3,acc1
  #PermitOpen any
  ForceCommand internal-sftp
  ChrootDirectory /somepath
Match Group pf2,acc2
  #PermitOpen any
  ForceCommand internal-sftp
Match Group pf1,acc3
  #PermitOpen any

我可以通过默认为一组等来节省几行PermitOpen,但这并不能消除迭代具有不同类型限制的两组组的每种可能组合的需要。如有其他特殊情况(这三个用户有一个特殊需要),那么我需要将它们不同组的数量相乘......

我知道配置似乎不允许这样做,但我是否遗漏了一些东西,或者它真的是字面的和枚举的吗?

最终我只想使用一些可以让我做更多附加方法的东西:

Match Group pf1
  PermitOpen localhost:1234 localhost:2345
Match Group pf2
  PermitOpen localhost:1234 localhost:2345 remote1:1234 remote2:2345
Match Group pf3
  #PermitOpen any
Match Group acc1
  ForceCommand internal-sftp
  ChrootDirectory /somepath
Match Group acc2
  ForceCommand internal-sftp
Match Group acc3
  # not needed

为了可读性以及易于配置。

背景搜索:

相关内容