温馨提示×

linux sftp传不了文件

小樊
47
2026-09-14 04:38:06
栏目: 智能运维

SFTP 在 Linux 下传不了文件,常见原因和排查思路如下,你可以按顺序对照:

一、先确认基础连接

  • 能连上吗?
    sftp user@host
    
  • 如果连都连不上,先检查:
    • SSH 服务是否开启:systemctl status sshd
    • 防火墙:iptables -L / firewall-cmd --list-all
    • 端口是否正确(默认 22)

二、常见无法传文件的原因

1️⃣ 权限问题(最常见)

  • 本地文件没读权限
  • 远端目录没写权限

排查:

ls -l 本地文件
ls -ld 远端目录

解决:

chmod 644 文件
chmod 755 目录

2️⃣ 磁盘满了

远端磁盘满了会导致写入失败:

df -h

3️⃣ SFTP 被限制为只读 / chroot

服务器可能限制了用户:

  • 只能登录不能写
  • 被 chroot 到某个目录

检查 /etc/ssh/sshd_config

Subsystem sftp internal-sftp
Match User xxx
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp

注意:

  • ChrootDirectory 必须 root 拥有且 755
  • 用户不能在 chroot 根目录写文件

4️⃣ SELinux 限制(CentOS / RHEL)

getenforce

如果是 Enforcing,可临时测试:

setenforce 0

长期解决需改策略或上下文。


5️⃣ 用了错误命令

正确示例:

sftp> put localfile
sftp> get remotefile

错误示例:

  • 在 shell 里直接 put
  • 路径写错

6️⃣ 被动/主动模式(少见)

SFTP 基于 SSH,一般不存在 FTP 的被动问题,但如果是 FTPS/FTP 才会涉及。


三、快速定位错误

传文件时看完整报错,例如:

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

把报错贴出来,我可以直接帮你判断。


四、替代方案

如果 SFTP 实在不行:

scp 文件 user@host:/路径
rsync -avz 文件 user@host:/路径

如果你愿意,可以把:

  • 系统版本
  • 报错信息
  • sshd_config 相关配置

发出来,我帮你精准定位。

0