将 SFTP 用户(基于 OpenSSH)限制到自定义端口

将 SFTP 用户(基于 OpenSSH)限制到自定义端口

我知道互联网上有大量关于允许自定义端口上的 OpenSSH SFTP 连接的帖子。我试过很多次,不是全部,但很多次。但在我的特定情况下,无法让它工作 :)

以下是我所遇到的困难:

  • CentOS Linux 版本 7.6.1810(核心),在 AWS 上
  • OpenSSH_7.4p1,OpenSSL 1.0.2k-fips 2017 年 1 月 26 日
  • 要求:
    • sshd允许 1 个实例
    • 端口 22:SSH
    • 端口 2222:SFTP
    • Chrooted SFTP 用户
  • 在我的顶部/etc/ssh/sshd_config有:

    Port 22
    Port 2222
    
  • johanmeiring使用Ansible 角色配置的 SFTP 服务器ansible-sftp

    • 然后我进行了修改/etc/ssh/sshd_config,将此Match行从:

      Match Group sftpusers
      

      到:

      Match Group sftpusers LocalPort 2222
      

      希望小组sftpusers用户*仅*能够通过端口 2222 进行 SFTP 连接

    • 我认为以下内容更为/etc/ssh/sshd_config相关:

      Port 22
      Port 2222
      ...
      Subsystem sftp internal-sftp -f AUTH -l VERBOSE
      ...
      Match Group sftpusers LocalPort 2222
          ChrootDirectory %h
          AllowTCPForwarding no
          X11Forwarding no
          ForceCommand internal-sftp
          PasswordAuthentication no
      

实际情况是 SFTP 用户能够通过端口 22 和 2222 进行连接。更糟糕的是,当通过端口 22 进行连接时,SFTP 用户根本没有被 chroot(他们可以cd自由地这样做)。所有这些都不是预期的。

如何基于 OpenSSH 实现 chrooted SFTP 用户,限制使用端口 2222,同时让 SSH 正常运行?

谢谢。

答案1

尝试添加另一个匹配组并拒绝该组的访问。

Match Group sftpusers LocalPort 22
    DenyGroups sftpusers

会工作。

相关内容