我知道互联网上有大量关于允许自定义端口上的 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
会工作。