在 CentOS 上“指定 SFTP 目录”通常有两种常见场景:
下面分别说明。
useradd -m -d /data/sftp/user1 -s /sbin/nologin user1
passwd user1
mkdir -p /data/sftp/user1
chown root:root /data/sftp/user1
chmod 755 /data/sftp/user1
⚠️ Chroot 目录 必须属于 root,且其他用户不能写
mkdir /data/sftp/user1/upload
chown user1:user1 /data/sftp/user1/upload
编辑:
vi /etc/ssh/sshd_config
注释或确认:
# Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
在文件末尾添加:
Match User user1
ChrootDirectory /data/sftp/user1
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
systemctl restart sshd
sftp user1@服务器IP
登录后只能在 /data/sftp/user1 内操作
如果只是想让用户登录后默认在指定目录:
usermod -d /path/to/dir user1
注意:
Match Group sftpusers
ChrootDirectory /data/sftp
ForceCommand internal-sftp
groupadd sftpusers
usermod -G sftpusers user1
查看日志:
tail -f /var/log/secure
常见错误:
setsebool -P ssh_chroot_rw_homedirs on
如果你能说明:
我可以给你一份可直接用的配置。