温馨提示×

ubuntu sftp为何无法上传

小樊
63
2026-09-14 10:43:21
栏目: 智能运维

在 Ubuntu 上 SFTP 无法上传文件 通常和 权限、配置、磁盘或 SELinux/AppArmor 有关。下面按最常见原因 → 排查方法 → 解决办法来帮你定位。


一、最常见原因 1:目录权限不对(90% 的情况)

现象

  • 能连上 SFTP
  • 能 ls
  • 但 put 失败,提示:
    • permission denied
    • Couldn't write file

原因

SFTP 上传目录 对登录用户没有写权限

检查

ls -ld /目标目录
ls -l /目标目录

正确权限示例

drwxrwxr-x  user  user  /home/user/upload

解决

chown -R user:user /目录
chmod 755 /目录

⚠️ 注意:

  • / 和父目录也不能是 777
  • 家目录不能是组可写(sshd 安全限制)

二、最常见原因 2:用户被限制在家目录(chroot)

如果你在 /etc/ssh/sshd_config 里用了:

Match User sftpuser
    ChrootDirectory /sftp
    ForceCommand internal-sftp

常见错误

  • Chroot 目录属于用户 → ❌
  • Chroot 目录可写 → ❌

正确做法

chown root:root /sftp
chmod 755 /sftp

mkdir /sftp/upload
chown sftpuser:sftpuser /sftp/upload

三、磁盘满了(很隐蔽)

检查

df -h

解决

清理空间或换目录


四、SFTP 子系统被禁用或配置错误

检查

grep sftp /etc/ssh/sshd_config

应有:

Subsystem sftp internal-sftp

改完重启:

systemctl restart ssh

五、AppArmor / SELinux(服务器级限制)

Ubuntu 默认

  • 一般用 AppArmor
  • 很少导致 SFTP 上传失败

可临时测试:

sudo aa-complain /usr/sbin/sshd

六、客户端问题(不是服务器)

常见错误

  • FileZilla 用了 FTP 而不是 SFTP
  • 路径写错
  • Windows 本地权限不足

测试命令

sftp user@ip
put test.txt

七、快速自检清单 ✅

whoami
pwd
ls -ld .
df -h .

如果你愿意,我可以直接帮你定位

请把以下信息发我:

  1. Ubuntu 版本
  2. SFTP 报错原文
  3. /etc/ssh/sshd_config 相关配置
  4. 上传目录路径和权限

我可以一步到位告诉你改哪里。

0 踩