在 CentOS 上创建一个 仅用于 SFTP 的用户(不能 SSH 登录),通常步骤如下:
# 创建用户
useradd -m sftpuser
# 设置密码
passwd sftpuser
mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser
⚠️ 注意:
SFTP 根目录必须属于 root,且其他用户不能写,否则登录会失败。
mkdir /data/sftp/sftpuser/upload
chown sftpuser:sftpuser /data/sftp/sftpuser/upload
编辑配置文件:
vi /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /data/sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
保存后退出。
systemctl restart sshd
sftp sftpuser@服务器IP
✅ 成功登录后,用户只能看到 /upload 目录,且不能 SSH 登录。
usermod -s /sbin/nologin sftpuser
bad ownership or modes for chroot原因是 ChrootDirectory 不是 root 所有或权限不对
✅ 解决:
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser
重复以上步骤,每个用户一个目录即可。
如果你需要 多用户共用目录 / 只读 / 限制 IP 的配置,也可以告诉我。