温馨提示×

centos sftp上传失败什么原因

小樊
40
2026-09-18 03:27:22
栏目: 智能运维

在 CentOS 上 SFTP 上传失败 的原因有很多,下面按常见程度给你一个排查清单,基本能覆盖 90% 的情况。


一、权限问题(最常见)

1. 目标目录没有写权限

ls -ld /目标目录
  • 属主/属组没有 w 权限
  • 用户不是目录 owner,也不在有权限的组里

✅ 解决:

chown 用户:用户组 /目录
chmod 755 /目录

2. 用户被 chroot 限制

如果你在 sshd_config 中配置了:

ChrootDirectory /home/sftp

那么:

  • Chroot 目录必须属主是 root
  • 权限不能大于 755

❌ 错误示例:

chown sftpuser /home/sftp

✅ 正确:

chown root:root /home/sftp
chmod 755 /home/sftp
mkdir /home/sftp/upload
chown sftpuser:sftpuser /home/sftp/upload

二、磁盘空间或 inode 满

df -h
df -i
  • 磁盘 100%
  • inode 用尽(小文件太多)

✅ 清理空间或扩容


三、SELinux 限制(CentOS 特有)

SELinux 会导致 能登录但无法写入

查看:

getenforce

临时关闭测试:

setenforce 0

✅ 永久解决(推荐):

semanage fcontext -a -t public_content_rw_t "/data/sftp(/.*)?"
restorecon -Rv /data/sftp
setsebool -P sftp_home_dir on

四、SSH / SFTP 配置问题

1. SFTP 子系统未启用

grep sftp /etc/ssh/sshd_config

应为:

Subsystem sftp internal-sftp

修改后:

systemctl restart sshd

2. 用户被禁止 SFTP

Match User xxx
    ForceCommand internal-sftp

如果用户被限制 shell 但没配这个,会失败。


五、防火墙 / 安全软件

  • firewalld
  • 云服务器安全组
  • fail2ban 封 IP

查看:

systemctl status firewalld
iptables -L

六、客户端问题(别忽略)

  • 使用被动模式错误(SFTP 不用被动)
  • 客户端磁盘满了
  • 文件名包含非法字符(中文/空格)

七、快速排查流程(建议按顺序)

  1. 看服务端日志
tail -f /var/log/secure
  1. 本地用 sftp 命令测试
sftp user@ip
put test.txt
  1. 检查目录权限 & SELinux
  2. 检查磁盘 & chroot

如果你愿意

你可以把下面信息发我,我可以直接帮你定位:

  • 报错信息(客户端 & /var/log/secure)
  • sshd_config 相关配置
  • 用户 & 上传目录权限

我可以一步一步帮你改到能传为止。

0 踩