下面给你一份**在 CentOS 上配置 SFTP(基于 OpenSSH)**的常用做法,适用于 CentOS 7 / 8 / Stream,安全、简单、生产可用。
yum install -y openssh-server
systemctl enable sshd
systemctl start sshd
useradd -m -s /sbin/nologin sftpuser
passwd sftpuser
mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser
mkdir /data/sftp/sftpuser/upload
chown sftpuser:sftpuser /data/sftp/sftpuser/upload
✅ 说明:
编辑配置文件:
vim /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
登录后:
//upload错误示例:
fatal: bad ownership or modes for chroot directory
✅ 解决:
root:rootgroupadd sftp
useradd -g sftp -s /sbin/nologin user1
Port 2222
防火墙:
firewall-cmd --add-port=2222/tcp --permanent
firewall-cmd --reload
PermitRootLogin no
如果你愿意,我可以:
告诉我你的使用场景即可。