在 CentOS 上创建 SFTP 账号,通常做法是创建一个仅用于 SFTP 的系统用户,并限制其只能访问指定目录(不能 SSH 登录)。下面是常用、安全的做法。
# 创建用户,不创建家目录(也可创建)
useradd -m sftpuser
# 设置密码
passwd sftpuser
# 例如只允许访问 /data/sftp/sftpuser
mkdir -p /data/sftp/sftpuser
# 修改目录权限(非常重要)
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser
# 用户实际可写目录
mkdir /data/sftp/sftpuser/upload
chown sftpuser:sftpuser /data/sftp/sftpuser/upload
✅ 注意:
编辑配置文件:
vi /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /data/sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes
如果有多个用户,可重复
Match User
systemctl restart sshd
sftp sftpuser@服务器IP
✅ 成功登录后只能看到 /upload 目录
如果用户只用于 SFTP:
usermod -s /sbin/nologin sftpuser
bad ownership or modes for chroot directory
✅ 解决:
root:root755如果你需要:
告诉我你的使用场景,我可以给你更合适的配置。