在 CentOS 上配置 SFTP 用户的主目录(Home Directory),通常有两种常见场景:
useradd -m -d /home/sftpuser sftpuser
passwd sftpuser
-m:自动创建主目录-d:指定主目录路径查看主目录:
grep sftpuser /etc/passwd
编辑 SSH 配置:
vi /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
Chroot 目录必须归 root 所有,且其他用户不能写
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
创建可写目录:
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload
✅ 用户登录后只能看到 /upload 可写
systemctl restart sshd
sftp sftpuser@服务器IP
例如:
mkdir -p /data/sftpuser
useradd -d /data/sftpuser sftpuser
passwd sftpuser
然后同样设置:
chown root:root /data/sftpuser
chmod 755 /data/sftpuser
并在 sshd_config:
Match User sftpuser
ChrootDirectory /data/sftpuser
ForceCommand internal-sftp
root:root755查看日志:
tail -f /var/log/secure
setsebool -P ssh_chroot_rw_homedirs on
| 项目 | 要求 |
|---|---|
| Chroot 目录 | root 所有 |
| 用户可写目录 | 子目录 |
| SSH 配置 | internal-sftp |
| 权限 | 755 |
如果你需要 多用户 / 多目录 / 虚拟用户 / 只读 / 只上传 等方案,我可以给你更完整的配置示例。