在 CentOS 上 SFTP 上传失败 的原因有很多,下面按常见程度给你一个排查清单,基本能覆盖 90% 的情况。
ls -ld /目标目录
w 权限✅ 解决:
chown 用户:用户组 /目录
chmod 755 /目录
如果你在 sshd_config 中配置了:
ChrootDirectory /home/sftp
那么:
❌ 错误示例:
chown sftpuser /home/sftp
✅ 正确:
chown root:root /home/sftp
chmod 755 /home/sftp
mkdir /home/sftp/upload
chown sftpuser:sftpuser /home/sftp/upload
df -h
df -i
✅ 清理空间或扩容
SELinux 会导致 能登录但无法写入
查看:
getenforce
临时关闭测试:
setenforce 0
✅ 永久解决(推荐):
semanage fcontext -a -t public_content_rw_t "/data/sftp(/.*)?"
restorecon -Rv /data/sftp
setsebool -P sftp_home_dir on
grep sftp /etc/ssh/sshd_config
应为:
Subsystem sftp internal-sftp
修改后:
systemctl restart sshd
Match User xxx
ForceCommand internal-sftp
如果用户被限制 shell 但没配这个,会失败。
查看:
systemctl status firewalld
iptables -L
tail -f /var/log/secure
sftp user@ip
put test.txt
你可以把下面信息发我,我可以直接帮你定位:
/var/log/secure)sshd_config 相关配置我可以一步一步帮你改到能传为止。