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

使用ftpretty/ftplib连接FTPES服务器遇权限错误与超时问题求助

问题分析与解决方案

我来帮你捋捋这个问题——你遇到的情况其实很典型:你的FTP服务器明确要求非匿名连接必须使用加密(所以secure=False会报530 Non-anonymous sessions must use encryption),但开启加密后又超时,大概率是连接方式不对或者网络端口限制的问题,咱们一步步解决:

1. 先明确服务器的加密类型

首先要确认你的服务器用的是显式TLS/SSL(也就是FTPES),而非隐式TLS:

  • 显式TLS默认用21端口,连接后需要手动升级到加密会话;
  • 隐式TLS默认用990端口,连接时直接加密。

你的服务器提示必须加密,说明它要求的是FTPES,这也是现在主流的FTP加密方式。

2. 调整ftpretty的FTPES连接参数

试试用更明确的参数配置ftpretty,同时强制开启被动模式(很多服务器默认要求被动模式,否则会被防火墙拦截导致超时):

from ftpretty import ftpretty
print("Establishing FTPES connection")
ftpclient = ftpretty(
    host,
    username,
    password,
    secure=True,
    timeout=60,
    # 显式指定使用FTPES(有些版本的ftpretty需要这个参数)
    ftps_impl='explicit'
)
# 强制开启被动模式,避免主动模式被防火墙拦截
ftpclient._ftp.set_pasv(True)
folderitems = ftpclient.list('/')
print("Connection successfully established")
print("Items in directory: "+str(folderitems))

3. 用ftplib手动实现可控的FTPES连接

如果ftpretty还是有问题,用原生ftplib.FTP_TLS手动控制连接流程会更灵活,这能避免ftpretty封装带来的隐藏问题:

from ftplib import FTP_TLS
print("Establishing FTPES connection with ftplib")
ftp = FTP_TLS()
ftp.timeout = 60
# 先连接到21端口(FTPES默认端口)
ftp.connect(host, port=21)
# 关键步骤:先升级到TLS加密会话,再登录
ftp.auth()
ftp.login(username, password)
# 开启被动模式
ftp.set_pasv(True)
# 可选:如果服务器要求数据传输也加密,执行这一步
ftp.prot_p()
# 获取目录列表
folderitems = ftp.nlst('/')
print("Connection successfully established")
print("Items in directory: "+str(folderitems))
# 记得关闭连接
ftp.quit()

这里的核心是先connect→再auth→最后login,很多人用FTP_TLS时会跳过auth步骤,导致加密流程出错。

4. 排查超时的核心原因:网络/防火墙限制

如果上面的代码还是超时,大概率是被动模式的端口被限制了:

  • FTP被动模式下,服务器会开放一个端口范围(比如10000-20000),你的本地机器需要能访问这些端口;
  • 联系服务器管理员确认这个端口范围,然后检查本地防火墙、公司网络是否允许访问这些端口;
  • 可以临时试试主动模式(ftp.set_pasv(False)),但现在大部分网络环境都不支持主动模式,因为客户端的端口会被防火墙拦截;
  • 另外检查TLS版本兼容性:有些老服务器只支持TLSv1.2,你可以手动指定TLS版本:
    import ssl
    # 在auth时指定TLSv1.2
    ftp.auth(context=ssl.SSLContext(ssl.PROTOCOL_TLSv1_2))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:22:36