sshd_config 中的 chroot 指令无法排除用户

sshd_config 中的 chroot 指令无法排除用户

在 Ubuntu 中,我在以下位置设置了 SSH 服务器配置/etc/ssh/sshd_config

Subsystem sftp internal-sftp

UsePAM yes
ChrootDirectory %h
ForceCommand internal-sftp
GatewayPorts no
AllowTcpForwarding no
KeepAlive yes
IgnoreUserKnownHosts no
Match group sftp

但即使是不在其中的用户sftp也会受到 chroot 的限制。例如,当bobby(not in sftp) 尝试通过 SSH 登录时,会发生此错误:

sshd[17977]:致命:chroot 目录“/home/bobby”的所有权或模式错误

我已经尝试过这个:

Match group sftp, User !bobby

并重新启动服务,但出现同样的问题。

答案1

您需要Match group sftp位于要应用于该组的行之前。没有任何内容应用于该组,sftp因为它后面没有关键字!或者更确切地说,在这种情况下,关键字将应用于每个人,因为您直到它们之后才指定要匹配的组。

引用自man sshd_config

Match   Introduces  a conditional block.  If all of the criteria on the
        Match line  are satisfied, the keywords on the following lines
        override those set  in the global section of the config file,
        until either another Match  line or the end of the file.  If a
        keyword appears in  multiple Match blocks that are satisified,
        only the first instance of the keyword is applied.

尝试类似的方法:

Subsystem sftp internal-sftp

UsePAM yes

GatewayPorts no
AllowTcpForwarding no
KeepAlive yes
IgnoreUserKnownHosts no

Match group sftp
  ChrootDirectory %h
  ForceCommand internal-sftp

相关内容