在 CentOS 上配置 SFTP(基于 SSH 的文件传输)通常有两种常见场景:
下面我分别说明,并附完整操作步骤(以 CentOS 7/8/Stream 为例)。
CentOS 默认已安装:
systemctl status sshd
如未启动:
systemctl start sshd
systemctl enable sshd
useradd sftpuser
passwd sftpuser
sftp sftpuser@服务器IP
✅ 到这一步,SFTP 已经可用。
useradd -m -s /sbin/nologin sftpuser
passwd sftpuser
/sbin/nologin禁止 SSH 登录
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
⚠️ 注意:
root 拥有编辑:
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
X11Forwarding no
AllowTcpForwarding no
如有多个用户,可改成:
Match Group sftpusers
systemctl restart sshd
sftp sftpuser@服务器IP
登录后:
cd upload
put test.txt
✅ 成功说明配置正确
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
检查:
ls -ld /data/sftp/sftpuser
必须是:
drwxr-xr-x root root
如果你愿意,可以告诉我:
我可以直接给你一份可直接用的配置模板。