文件传到FTP服务器不成功,多数情况下是权限、网络、被动模式这三大类问题造成的,按“网络连通→账号权限→主动被动模式→服务器配置”的顺序排查,自己就能解决。
ftp上传文件失败原因有哪些?
你明明看着FTP客户端连着服务器,一拖文件就报错,那种感觉确实恼火,其实FTP上传失败的原因并不复杂,绝大多数都逃不出下面这几类。
- 账号只有读权限,没有写权限,上传时返回550或553。
- 本地网络屏蔽了21端口,或者用了代理,连接被重置。
- 服务器防火墙或云安全组没有放行FTP数据端口,尤其是被动模式下的随机端口。
- 客户端与服务器主动/被动模式不匹配,例如服务器位于NAT后面,你必须用被动模式。
- 目标目录不存在或路径错误,FTP客户端拼错了目录名。
- 服务器磁盘写满,或账号配额用尽。
| 失败表现 | 常见原因 | 优先排查项 |
|---|---|---|
| 连接成功,上传时提示550 | 目录写入权限不足 | 账号权限、目录属主 |
| 连接超时或连接被重置 | 端口不通 | 防火墙、安全组 |
| 传大文件中途断开 | 网络波动或超时设置过短 | 断点续传、超时时间 |
| 所有操作都卡顿 | 主动被动模式不匹配 | 切换被动模式 |
ftp服务器连接不上怎么办?先检查这四件事
连接不上和上传失败往往是两回事,连接不上,说明你连登录那一步都没走完,问题集中于网络和账号。
第一步:确认网络通不通
在本地电脑打开命令行,先ping服务器IP或域名,看是否丢包,ping通后再测试FTP端口,Windows下可以用telnet,Mac/Linux下可以用nc,命令示例:
ping 你的FTP服务器地址
telnet 你的FTP服务器地址 21
如果ping不通,先解决网络路由问题;如果ping通但telnet提示无法打开连接,基本可以确定是服务器端口没放行。
第二步:核对账号和密码
FTP客户端报530错误,意思是登录验证失败,别急着怀疑服务器,先确认密码是否包含大小写、特殊符号,部分客户端会保存旧密码,重新手动输入一次,去掉所有额外空格。
第三步:检查防火墙和安全组
自己管理的服务器,在服务器上查看防火墙规则,Linux上执行iptables -L -n,Windows上检查高级防火墙入站规则,云服务器则重点看安全组入方向,放行21端口,如果使用了被动模式,还得放行一组高位端口,比如vsftpd配置的pasv_min_port和pasv_max_port区间。
第四步:在客户端强制开启被动模式
很多家用路由器和小型服务器的FTP服务,默认要求客户端使用被动模式,FileZilla里:编辑->设置->连接->传输模式,选择“被动”,然后重连,FlashFXP同样在站点管理器里把连接类型改为“PASV”。
ftp无法上传文件权限设置方法
连接上了,但一传文件就失败,基本就进入权限排查环节,这一部分直接告诉你权限怎么给。
先搞清环境:虚拟主机还是独立服务器
虚拟主机的文件管理面板里,通常有“权限”按钮,把目标目录设为可写,独立服务器或VPS,则通过命令行修改。
Linux服务器的目录权限设置
假设FTP账号叫ftpuser,要上传到/data/wwwroot/ftpuser,执行:
chown -R ftpuser:ftpgroup /data/wwwroot/ftpuser chmod -R 755 /data/wwwroot/ftpuser
如果你希望其他用户也能上传到同一目录,可以把755改成775,但别用777,行业共识是权限全开有安全隐患,除非目录完全隔离在临时区域。
vsftpd的写权限开关
如果你的服务器用的是vsftpd,打开配置文件/etc/vsftpd.conf,检查以下两行是否被注释:
write_enable=YES
local_umask=022
修改后执行systemctl restart vsftpd,改完后用客户端重新登录,注意一定要重新连接,配置才会生效。
提示“550 Create directory operation failed”怎么处理
这个提示说明服务器能连接,但无法创建目录,是权限问题,先看FTP账号的家目录有没有写权限,再看chroot后是否被限制在无写目录,一般让FTP账号的家目录本身可写,或者专门建一个上传子目录并授权。
ftp传输中断怎么解决?
传输中断和权限无关,属于连接稳定性问题,小文件和大文件的表现略有不同。
小文件传着传着就失败
连接本身没问题,但一上传几百KB的文件就断,这种情况多半是防火墙或安全组拦截了高频握手的端口,或者本地杀毒软件实时扫描FTP临时文件导致,把杀毒软件对FTP客户端、临时目录的实时监控暂时关闭,再试一次。
大文件传到一半断线
业内专家指出,FTP协议在传输过程中对网络抖动比较敏感,所以长时间传输容易断,解决方法有三条:
- 开启客户端的断点续传能力,像FileZilla在文件传输失败后右键选择“继续传输”。
- 调大服务器超时时间,vsftpd里
idle_session_timeout默认为300秒,改成600甚至1800。 - 更换更稳定的传输协议,比如SFTP或者rsync,对于超过1GB的文件,SFTP比FTP实际更省心。
断点续传后文件不完整
有些时候续传成功了,但文件解压出错,这种情况通常是服务器端没有开启续传支持,或者客户端与服务器的续传偏移量不一致,最简单的办法:把原文件删除,重新完整传一遍,同时检查FTP客户端的二进制传输模式,别用“智能”模式。
排查FTP上传失败,说到底就是三步:先通网络,再管权限,后调模式,你手边有一台电脑、一份服务器账号,按照上面的顺序操作,绝大多数问题都能自行定位,如果顽固失败,直接查看服务器FTP日志,错误编码会明确指向问题根源。
Q&A:文件传到ftp服务器不成功相关常见问题
问:上传时提示“550 Permission denied”,怎么解决?
先确认FTP账号对目标目录是否有写入权限,用客户端尝试新建一个空目录,如果提示创建成功,说明权限没问题,问题出在文件名或目录本身,如果是Linux服务器,直接用chmod修改目标目录的写入位,注意属主也要匹配,改完重新登录客户端,再次上传。
问:为什么ftp上传大文件总是到一半就失败?
大文件传输对网络连续性要求高,服务器端的idle_session_timeout如果设置过短,一旦磁盘写入速度跟不上或网络波动,连接就会超时,客户端方面,开启断点续传后在原地继续传输即可,如果频繁在同一点断,建议改用SFTP,它的连接保持机制更可靠。
问:本地可以连接ftp服务器,但上传速度非常慢是什么原因?
速度慢不一定是服务器问题,先确认你用的主动模式还是被动模式,被动模式下数据端口随机分配,如果安全组只放行21端口,数据连接会被拦截导致传输卡顿甚至超时,本地上传带宽是决定性因素,可以尝试将文件压缩后上传或错开高峰期。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/724945.html





