在 CentOS 上创建一个仅用于 SFTP 的用户(不能 SSH 登录,只能传文件)是最常见需求。下面给你一套标准、安全、可直接用的做法。
useradd -m -s /sbin/nologin sftpuser
设置密码:
passwd sftpuser
-s /sbin/nologin表示禁止 SSH 登录,但允许 SFTP
⚠️ SFTP 根目录所有者必须是 root,且权限不能大于 755
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 /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /data/sftp/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
如果有多个用户:
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
systemctl restart sshd
sftp sftpuser@服务器IP
登录后:
sftp> cd upload
sftp> put test.txt
原因:
✅ 正确:
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser
chown root:sftp /data/sftp/share
chmod 775 /data/sftp/share
Match Group sftp 批量管理如果你告诉我:
我可以给你更精确的配置。