尝试通过 sftp 登录 chroot 账户时连接中止

尝试通过 sftp 登录 chroot 账户时连接中止

我正在尝试创建一个用户 kake_sftp,它可以登录位于 /var/www/html 或类似位置的 Web 服务器。我知道 chroot 需要一些额外的子目录才能使权限发挥作用,所以我可以添加新文件夹或稍微更改文件夹布局。

我在组 www-data 中创建了用户,主目录位于 /var/www/html

$ cat /etc/passwd | grep kake_sftp
kake_sftp:x:1001:1001::/var/www/html:/bin/bash

$ groups kake_sftp
kake_sftp : kake_sftp www-data

然后我在 /etc/ssh/sshd_config 中做了一些更改。我将“Subsystem sftp /usr/lib/openssh/sftp-server”替换为“Subsystem sftp internal-sftp”,并在末尾添加了以下几行

Match User kake_sftp
ChrootDirectory /var/www
ForceCommand internal-sftp
AllowTcpForwarding no

www文件夹的权限设置如下。

$ ls -la /var/www
drwxrwxr-x  3 root root     4096 Apr  7 12:17 .
drwxr-xr-x 12 root root     4096 Apr  4 10:17 ..
drwxr-xr-x  2 root www-data 4096 Apr  4 11:34 html

当我尝试使用设置为 sftp 的 Filezilla 登录时,出现以下错误。

Error:  Network error: Software caused connection abort
Error:  Could not connect to server

当我尝试通过 sftp 以主用户身份登录时,一切运行正常。因此客户端没有问题。

答案1

之所以不起作用,是因为 chrooted 目录具有写入权限。通过撤销所有写入权限,我成功连接了。

chmod 555 /var/www

相关内容