在 CentOS 上配置 SFTP 权限,常见需求是:
下面给你一套 最常用、最安全的做法(Chroot + 内部 SFTP)。
# 创建用户
useradd -m sftpuser
# 设置密码
passwd sftpuser
创建 SFTP 根目录(必须是 root 拥有):
mkdir -p /sftp/sftpuser
chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser
用户实际可写目录:
mkdir /sftp/sftpuser/upload
chown sftpuser:sftpuser /sftp/sftpuser/upload
chmod 755 /sftp/sftpuser/upload
编辑配置文件:
vi /etc/ssh/sshd_config
# Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes
systemctl restart sshd
sftp sftpuser@服务器IP
✅ 成功登录
❌ 不能用 ssh sftpuser@IP(会被拒绝)
原因:
755✅ 正确示例:
chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
groupadd sftpusers
usermod -G sftpusers sftpuser
700,属主为用户✅ 禁用 root 登录
✅ 使用密钥 + 密码
✅ 防火墙限制 IP
✅ 定期审计 /var/log/secure
如果你有具体需求(比如:多个用户共享目录 / 只读发布 / 只允许某 IP),可以告诉我,我可以直接给你配置示例。