You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI Runner中使用lftp上传文件超时问题求助

排查GitLab CI Runner中lftp FTP连接超时问题

针对你遇到的lftp连接FTP服务器超时(Socket error (Operation timed out))问题,可按以下步骤逐一排查:

1. 验证Runner到FTP服务器的网络连通性

在Runner所在的执行环境中,先通过基础网络工具确认端口21是否可达:

  • 使用telnet测试:
    telnet 145.14.145.229 21
    
  • 或者用nc工具(如果可用):
    nc -zv 145.14.145.229 21
    

如果测试失败,说明是网络层面拦截:可能是Runner所在服务器的出站防火墙限制、目标FTP服务器的入站安全组/防火墙未开放21端口,或者两者之间的网络路由问题。

2. 切换为FTP被动模式

默认FTP主动模式在很多CI/CD环境中容易被防火墙阻断,尝试启用被动模式,修改lftp命令如下:

lftp -c "debug; set ftp:ssl-force true; set ssl:verify-certificate false; set ftp:passive-mode true; open -u $FTP_HOST_DEPLOY_USERNAME,$FTP_HOST_DEPLOY_PASSWORD $FTP_HOST_DEPLOY; mirror -Renv ./dist/app ./public_html"

被动模式下,数据连接由客户端主动发起,适配多数CI环境的网络规则。

3. 简化命令排查登录问题

先去掉mirror上传逻辑,仅测试FTP登录是否正常,排除上传参数的干扰:

lftp -c "debug; set ftp:ssl-force true; set ssl:verify-certificate false; open -u $FTP_HOST_DEPLOY_USERNAME,$FTP_HOST_DEPLOY_PASSWORD $FTP_HOST_DEPLOY; ls"

如果登录后能执行ls命令,说明连接本身正常,问题出在mirror参数或目标目录权限;如果仍超时,回到网络层面排查。

4. 确认FTP服务器的访问权限

检查目标FTP服务器是否将Runner的IP地址加入了允许列表,部分FTP服务会限制仅指定IP能访问。同时确认服务器的被动模式端口范围(通常是30000-31000这类区间)是否在防火墙中开放,被动模式需要这些端口用于数据传输。

5. 检查GitLab Runner的网络配置

如果使用的是GitLab托管Runner,确认Runner所在区域的网络能访问目标FTP服务器;如果是自托管Runner,检查服务器的出站规则,确保没有拦截到目标IP的21端口(及被动模式端口)的流量。

内容的提问来源于stack exchange,提问作者Fabrizio Manna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:05:25