You need to enable JavaScript to run this app. Jenkins流水线用curl FTP上传站点报curl(25) 553错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins流水线用curl FTP上传站点报curl(25) 553错误如何解决

问题核心定位

你当前遇到的curl: (25) Failed FTP upload: 553报错,和Jenkins节点本地的构建产物权限无关——你校验过的本地目录权限drwxr-xr-x 2 jenkins jenkins已经足够让jenkins用户读取待上传文件,报错根源全部出在FTP服务端的交互逻辑上。
FTP响应码553的标准含义是“服务端拒绝执行请求的操作,通常是路径无效、对象不允许上传、目标目录无写入权限”。


分场景排查解决

  • 最常见触发原因:你当前curl命令的上传对象是文件夹,不是单个文件
    • FTP协议原生不支持单条curl命令直接递归上传整个目录,你现在的命令中-T参数指向的/var/lib/jenkins/workspace/.../ang-CICD是个文件夹,服务端收到无文件名的目录上传请求会直接拒绝,返回553错误
    • 对应修正方案:
      • 方案1:先在Jenkins节点本地把整个站点目录打包为压缩包(如tar.gz、zip),再用curl上传压缩包到FTP服务端,后续在服务端执行解压操作(需提前给FTP账号开通对应操作权限)
      • 方案2:通过脚本遍历目录下的所有文件,搭配curl的--ftp-create-dirs参数,逐个把文件上传到FTP对应路径,遇到子目录先在服务端创建再上传文件
  • 第二高频触发原因:FTP目标路径配置错误
    • 你命令中拼接的FTP地址为ftp://XXXXX:XXXX@XXXXXXXX/public_html,需要核对两点:
      1. 虚拟主机类的FTP账号通常会被chroot锁定在自身专属目录下,如果你登录后默认的根目录就是public_html,多拼接的/public_html会导致路径不存在,服务端返回553。这种场景下直接把路径末尾的/public_html去掉,用登录后的默认路径上传即可
      2. 确认当前使用的FTP账号,对目标上传目录有写入、创建文件的权限——很多主机环境中public_html目录的所有者是web服务进程(如nginx、apache),如果没有给ftp用户组开放写权限,就会触发553错误
  • 快速排查小技巧
    • 给curl命令加-v调试参数,把交互过程的日志打出来,能直接看到FTP服务端返回的具体拒绝原因
    • 先用最小测试用例排查:准备一个1KB的txt测试文件,单独用curl上传这个文件,确认是权限问题,还是直接传文件夹的逻辑问题
    • 检查FTP账号密码中是否包含@、空格等特殊字符,如果有需要做URL转义,否则会导致curl解析FTP路径错误

内容的提问来源于stack exchange,提问作者Mr-Programer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.31 15:54:04