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

Python ftplib登录成功但retrlines/nlst超时故障求助

问题解决:Python ftplib调用LIST/nlst超时故障

故障原因

Python标准库ftplib默认使用FTP主动模式(PORT模式),这种模式下服务器需要主动发起反向连接到客户端传输数据(比如目录列表)。若客户端网络有防火墙限制,或vsftpd主动模式配置存在问题,反向连接无法建立就会触发超时。

从你提供的CLI ftp输出也能看到服务器提示:200 PORT command successful. Consider using PASV.,说明服务器更推荐被动模式(PASV),而CLI的ftp可能自动切换了模式,或是你的环境对被动模式的数据流连接兼容性更好。

解决方法

在Python代码中登录成功后显式启用FTP被动模式即可,修改后的代码如下:

from ftplib import FTP

# 替换为你的实际参数
ftp_host = "192.168.0.103"
ftp_login = "login"
ftp_password = "your_password"

f = FTP(ftp_host)
print(f.login(ftp_login, ftp_password))
print(f.pwd())
# 启用被动模式
f.set_pasv(True)
f.retrlines('LIST')
f.close()

补充说明

  • 被动模式下,服务器会开放随机端口等待客户端主动发起连接,这种模式在带防火墙或NAT的网络环境中兼容性更强。
  • 若启用被动模式后仍有问题,可检查CentOS7虚拟机的防火墙规则,确保vsftpd配置文件(/etc/vsftpd/vsftpd.conf)中设置的pasv_min_port和pasv_max_port端口范围已开放,同时确认虚拟机的网络端口转发设置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:07:38