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

Ubuntu 16.04 Server中lftp连接远程FTP服务器受阻问题排查

解决lftp卡在"Making data connection"的服务器端问题

这种情况我之前帮人排查过不少,结合你说的ftp命令能正常连接但lftp卡在建立数据连接的现象,大概率是FTP服务器的被动模式配置出了问题,或者lftp的默认行为和服务器不匹配。下面是几个最可能的服务器端原因及排查方向:

1. 被动模式(PASV)的端口范围未正确配置或开放

lftp默认优先使用被动模式(PASV),而传统的ftp命令可能默认用主动模式(PORT)。如果你的FTP服务器(比如vsftpd)没配置被动模式的端口范围,或者这些端口没在网络层面开放(哪怕你关了本地ufw,也要考虑机房硬件防火墙的限制),就会卡在数据连接这一步。

  • 以vsftpd为例,检查/etc/vsftpd.conf:
    • 确保pasv_enable=YES(开启被动模式)
    • 添加或确认pasv_min_port和pasv_max_port(比如pasv_min_port=30000,pasv_max_port=30100)
    • 重启vsftpd服务,同时确保这些端口在所有防火墙(包括硬件防火墙)中是开放状态

2. NAT环境下被动模式的公网地址未配置

如果你的FTP服务器在NAT(比如路由器、云服务器的内网)后面,服务器默认会把内网IP返回给客户端,lftp拿到内网IP后根本无法建立数据连接,而ftp命令可能在某些场景下能自动适配这个问题。

  • 还是以vsftpd为例,在/etc/vsftpd.conf中添加:
    pasv_address=你的服务器公网IP
    pasv_addr_resolve=YES  # 如果用域名的话开启这个
    
    重启服务后再测试lftp连接。

3. 强制lftp使用主动模式验证问题

你可以先强制lftp使用主动模式(和ftp命令的默认行为一致),看看能不能正常执行命令,以此验证是不是被动模式的问题:

lftp -c "set net:max-retries 1; set ftp:ssl-allow off; set ftp:passive-mode off; open -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST; ls ./public_html/testing;"

如果这个命令能成功,就坐实了是服务器被动模式的配置问题,回到前面两步去修复即可。

4. 查看FTP服务器日志定位具体错误

最直接的方式是去服务器上看FTP服务的日志,比如vsftpd的日志默认在/var/log/vsftpd.log,当你用lftp连接时,日志里会记录具体的错误信息(比如端口分配失败、地址返回错误等),这能帮你快速定位问题根源。

内容的提问来源于stack exchange,提问作者anton kham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:14:37