温馨提示×

ubuntu sftp上传失败咋回事

小樊
50
2026-09-17 11:47:47
栏目: 智能运维

Ubuntu 上 SFTP 上传失败的原因挺多的,下面按常见原因 + 排查方法给你梳理一下,你可以对照看是哪一种。


一、权限问题(最常见)

1. 目标目录没有写权限

ls -ld /目标目录

如果看不到 w(写权限),就会失败。

解决:

sudo chown -R 你的用户:你的用户 /目标目录
sudo chmod 755 /目标目录

2. 用错了用户

  • 你是 userA 登录,但目录属于 userB
  • 或目录在 /root 下(普通用户不能写)

二、磁盘空间满了

df -h

如果 Use% 是 100%,上传必然失败。

解决:

  • 清理日志
  • 删除大文件
  • 扩容磁盘

三、SSH / SFTP 服务配置问题

1. SFTP 被限制(chroot)

查看配置:

sudo nano /etc/ssh/sshd_config

常见限制:

Match User xxx
    ChrootDirectory /home/xxx
    ForceCommand internal-sftp

如果 ChrootDirectory 权限不对(必须是 root 拥有,且 755),会直接断开。

修复示例:

sudo chown root:root /home/xxx
sudo chmod 755 /home/xxx

四、SELinux / AppArmor(较少但有可能)

Ubuntu 默认用 AppArmor:

sudo aa-status

如果 SSH 被限制,可临时测试:

sudo systemctl restart apparmor

五、上传方式不对

1. 用 sftp 命令行

sftp user@ip
put 本地文件 远程路径

2. 用 FileZilla / WinSCP

  • 协议选 SFTP(不是 FTP)
  • 端口 22
  • 用户名密码正确

六、防火墙 / 端口问题

sudo ufw status

确保 22 端口开放:

sudo ufw allow 22

七、看错误日志(最关键)

服务器端:

sudo tail -f /var/log/auth.log

客户端失败时会显示类似:

  • Permission denied
  • No such file or directory
  • write failed

八、快速自检清单 ✅

  • [ ] 能用 SSH 登录
  • [ ] 目标目录可写
  • [ ] 磁盘没满
  • [ ] 用的是 SFTP 不是 FTP
  • [ ] 没被 chroot 限制
  • [ ] 日志无报错

如果你愿意,可以把具体报错信息或**用的工具(命令行 / FileZilla / 代码)**发出来,我可以直接帮你定位。

0 踩