如何组织和设置SSH用户?

如何组织和设置SSH用户?

我希望所有用户都使用您的公钥/私钥对我的服务器进行任何类型的访问。在 SSH 配置中,我将设置 3 个组:

  1. sshaccess:用户可以使用shell、SFTP和隧道;
  2. sftpaccess:用户不能使用shell,但可以使用SFTP;
  3. mysqlaccess:用户无法使用 shell,但可以使用 TCP 转发到端口 3306。

我将只允许这 3 个组使用 SSH 连接:

AllowGroups sshaccess sftpaccess mysqlaccess

对于有组的用户sftpaccess,我将强制 SFTP 并将用户锁定在您的主文件夹中:

Match Group sftpaccess
    ForceCommand internal-sftp
    ChrootDirectory %h
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no

对于有组的用户mysqlaccess,我将允许端口 3306 上的隧道:

Match Group mysqlaccess
    Banner no
    PermitTunnel yes
    AllowTcpForwarding yes
        PermitOpen 127.0.0.1:3306

但是,假设我有用户caique并且他需要:

  • 访问 SFTP,锁定在您的主文件夹中;
  • 访问 MySQL 隧道以使用您的凭据进行连接。

我不想创建一个用于 SFTP 的用户和另一个用于 MySQL Tunnel 的用户,那么实现此目的的最佳方法是什么?

我不想暴露 MySQL 端口,因此我使用 MySQL Tunnel。但是,在我的测试中,我无法将 Tunnel 用于与 关联的用户sftpaccess,我错过了什么?

答案1

像这样的部分怎么样:

Match Group sftpaccess Group mysqlaccess
    ForceCommand internal-sftp
    ChrootDirectory %h
    AllowAgentForwarding no
    Banner no
    PermitTunnel yes
    AllowTcpForwarding yes
        PermitOpen 127.0.0.1:3306

不可否认,这需要重复,并且可能有效也可能无效,具体取决于 sshd 是否加载所有用户组(我怀疑它确实如此)。

或者,您可以创建特定于用户的Match(这往往假设您不会获得更多此类用户。

我怀疑规则的顺序很重要,但我不确定这应该是第一个还是最后一个(相对于其他两个)。我认为应该是第一。

相关内容