我正在建立一个受限 sftp用户与chroot,标准程序对我来说很好,但是我有现有用户在同一台服务器上使用 sftp,这就是为什么我不想冒险更改默认子系统”sftp 服务器“ 和 ”内部-sftp“对于所有用户,我想知道是否可以跳过此步骤(下面的步骤 1)并且仅使用“ForceCommand 内部 sftp“ 在里面 ”匹配用户“块就足够了吗(步骤 2)?我已经做了一些测试,看起来不错,我是否遗漏了什么?
这是我正在遵循的程序的开始:
1 - Edit sshd_config. Comment the original "Subsystem" entry for sftp
and replace it with the "internal-sftp" entry:
# vi /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
2 - Add the following to the end of the /etc/ssh/sshd_config file:
Match User user99
ChrootDirectory /chroots/%u
AllowTcpForwarding no
ForceCommand internal-sftp
X11Forwarding no
谢谢你的时间。
答案1
您的ForceCommand internal-sftp
足以强制使用 OpenSSH 中的内部 sftp 服务器。在 a 中,Match User
它仅适用于该用户。请注意Match Group
,如果需要一个可以匹配多个用户的组,这也是一个选项。
Subsystem
在这种情况下,这并不重要。 这可能是因为 sftp-server
程序是一种替代方案,或者可能是因为有人对实现选择的这种细微差别感到困惑。
使用足够新的 OpenSSH,我倾向于使用插入文件,可能是 Include /etc/ssh/sshd_config.d/*.conf
Install /etc/ssh/sshd_config.d/chroot.conf
或其他什么,其中只包含定义 chroot 的 Match 块。