在 CentOS 上配置 SFTP(基于 SSH 的文件传输)通常有两种常见方式:
useradd sftpuser
passwd sftpuser
systemctl status sshd
# 若未运行
systemctl start sshd
systemctl enable sshd
sftp sftpuser@服务器IP
✅ 这种方式 直接使用系统密码登录 SFTP
useradd -m -s /sbin/nologin sftpuser
passwd sftpuser
vi /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload
systemctl restart sshd
sftp sftpuser@服务器IP
✅ 用户 只能 SFTP,不能 SSH 登录
groupadd sftpusers
useradd -m -g sftpusers -s /sbin/nologin user1
useradd -m -g sftpusers -s /sbin/nologin user2
Match Group sftpusers
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
mkdir -p /data/sftp/user1/upload
chown root:root /data/sftp/user1
chown user1:sftpusers /data/sftp/user1/upload
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
setsebool -P ssh_chroot_rw_homedirs on
❌ Connection closed
→ Chroot 目录属主必须是 root
❌ Permission denied
→ 上传目录权限不对
❌ 能 SSH 不能限制
→ ForceCommand 没写对
如果你愿意,我可以:
你用的是 CentOS 7 还是 8 / Stream?