在 CentOS(7/8/Stream 等) 上搭建 SFTP 服务,通常使用系统自带的 OpenSSH,不需要额外安装 FTP 服务。下面从最简可用到多用户隔离逐步说明。
rpm -qa | grep openssh
systemctl status sshd
如未安装:
yum install -y openssh-server
systemctl enable --now sshd
✅ SFTP 默认就支持(基于 SSH)
useradd -m -s /sbin/nologin sftpuser
passwd sftpuser
mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp
chown sftpuser:sftpuser /data/sftp/sftpuser
chmod 755 /data/sftp
⚠️ 注意:
sftpuser)编辑配置文件:
vi /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
改为:
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
保存后:
systemctl restart sshd
sftp sftpuser@服务器IP
useradd -m -s /sbin/nologin user2
mkdir -p /data/sftp/user2
chown root:root /data/sftp
chown user2:user2 /data/sftp/user2
sshd_config 中:
Match Group sftp
ChrootDirectory /data/sftp
ForceCommand internal-sftp
groupadd sftp
usermod -G sftp sftpuser
usermod -G sftp user2
setsebool -P ssh_chroot_rw_homedirs on
如果你需要:
✅ 只允许上传不能删除
✅ Docker 中搭建 SFTP
✅ 使用密钥登录
告诉我你的使用场景,我可以给你更定制化的配置。