温馨提示×

centos sftp上传失败为啥

小樊
70
2026-10-11 20:40:11
栏目: 智能运维

在 CentOS 上 SFTP 上传失败 原因很多,下面按最常见 → 较少见帮你梳理,你可以对照排查。


一、最常见原因

1️⃣ 权限问题(90% 的情况)

现象:能登录,但上传报错 Permission denied

检查:

ls -ld /目标目录

确保:

  • 目录属主或属组对你有 写权限
  • 你登录的用户对该目录有 w 权限

解决示例:

chown user:user /data/sftp
chmod 755 /data/sftp

⚠️ 注意:父目录也要有执行权限(x)


2️⃣ SELinux 限制(CentOS 特有)

即使权限正确,SELinux 也会拦

检查:

getenforce

如果是 Enforcing:

临时关闭测试:

setenforce 0

如果上传成功 → 就是 SELinux 问题

永久解决:

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

3️⃣ 磁盘满了

df -h

如果 Use% = 100%,上传必失败


4️⃣ SFTP 被 chroot 限制(sshd 配置)

常见于:

Match User sftpuser
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp

⚠️ 规则很严格:

  • ChrootDirectory 必须是 root 拥有
  • 权限不能超过 755
  • 子目录才能给用户写

错误示例:

chown sftpuser /data/sftp   # ❌

正确:

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

二、SSH / SFTP 服务问题

5️⃣ sftp-server 路径错误

grep sftp /etc/ssh/sshd_config

应有:

Subsystem sftp internal-sftp

或

Subsystem sftp /usr/libexec/openssh/sftp-server

修改后:

systemctl restart sshd

6️⃣ 用户被禁止写操作

grep 用户名 /etc/passwd

如果是 /sbin/nologin 是正常的
但某些配置可能禁止 SFTP 写


三、客户端或网络原因

7️⃣ 防火墙 / 安全组

SFTP 走 22 端口

firewall-cmd --list-all

8️⃣ 客户端问题

  • FileZilla / WinSCP 设置错误
  • 使用了 FTP 而非 SFTP
  • 被动模式问题(SFTP 不存在,但很多人混淆)

四、快速定位方法(强烈推荐)

在服务器上看日志:

tail -f /var/log/secure

上传一次,看报错最直接


五、你可以直接告诉我:

我可以精准判断,请贴出:

  1. 报错信息(完整)
  2. sshd_config 相关配置
  3. 上传目录权限和属主
  4. 是否启用了 SELinux

我可以一步一步帮你修 ✅

0 踩