对单个用户而不是所有用户使用 internal-sftp 吗?

对单个用户而不是所有用户使用 internal-sftp 吗?

我正在建立一个受限 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 块。

相关内容