在 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