我尝试在 Linux 中访问 sftp 目录,但出现此错误
packet_write_wait: Connection to xxx.xxx.xxx.xxx port 22: Broken pipe
Couldn't read packet: Connection reset by peer
在日记里我得到了
sshd[24404]: fatal: bad ownership or modes for chroot directory component "/"
我的目录是 /var/sftp/files:
drwxr-xr-x 3 root root 4096 Mai 24 13:48 sftp
drwxr-xr-x 2 UserFTP root 4096 Mai 24 13:48 files
我已将这些行添加到 /etc/ssh/sshd_config :
Match User UserFTP
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp/%u
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
然后我重新启动 ssh 服务。
注意:我也使用相同的用户访问 ftp。
有人可以帮助我并给我一个解决方案吗?
答案1
%u
提供用户名。chroot 目录及其所有父目录不得具有组或全局写入能力(即chmod 755
)。chroot 目录及其所有父目录必须由 root 拥有。子目录可能拥有 UserFTP。
对于用户UserFTP
:
% mkdir -p /var/sftp/UserFTP/files
% chown root:root /var/sftp/UserFTP
% chmod 755 /var/sftp/UserFTP
% chown UserFTP /var/sftp/UserFTP/files
% ls -ld /var/sftp/UserFTP
drwxr-xr-x 3 root root 4096 24. kvě 15.29 /var/sftp/UserFTP/
% ls -ld /var/sftp/UserFTP/files
drwxr-xr-x 2 UserFTP root 4096 26. kvě 12.07 /var/sftp/UserFTP/files/
$ sftp UserFTP@localhost
sftp> cd files
sftp> put file123
% ls /var/sftp/UserFTP/files
file123