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

使用Python连接Azure App Service FTPS下载文件失败如何解决?

问题解决说明

核心错误原因

你目前使用的ftplib.FTP是针对明文FTP协议的类,而Azure App Service提供的是FTPS(FTP over TLS/SSL)加密协议,二者不兼容,这是你连接报错的根本原因。

host参数正确配置+正确连接步骤

要连接Azure App Service的FTPS服务,需要使用ftplib.FTP_TLS类,参数配置规则如下:

  • host参数填写部署中心FTPS端点去掉ftps://前缀后的内容,不要带http:///https:///ftps://等协议头,也不要带路径后缀
  • 端口990不要直接传入构造函数(FTP_TLS构造函数第二个参数是用户名,不是端口),需要通过connect方法单独指定
  • 连接完成后必须调用prot_p()方法开启数据传输通道加密,否则Azure会拒绝后续文件操作请求

正确代码示例:

from ftplib import FTP_TLS

# 初始化FTPS对象
ftp = FTP_TLS()
# 连接服务,替换为你自己的FTPS域名(去掉ftps://前缀)和端口
ftp.connect(host='你的部署中心FTPS域名', port=990)
# 登录,替换为部署中心提供的FTPS用户名和密码
ftp.login(user='你的FTPS用户名', passwd='你的FTPS密码')
# 开启数据通道加密
ftp.prot_p()

# 后续可执行下载、列目录等操作,示例:列出当前目录文件
print(ftp.dir())

# 操作完成后关闭连接
ftp.quit()

过往报错原因说明

  • socket.gaierror: [Errno 11001] getaddrinfo failed:是因为传入的host参数带了协议前缀,域名解析时无法识别带https:///ftps://的字符串为有效域名,导致解析失败
  • TimeoutError: [WinError 10060]:是因为用明文FTP类访问FTPS专属的990端口,服务端不会响应未加密的FTP连接请求,所以超时。如果直接填写App Service的公网IP也会超时,因为Azure的FTPS服务是绑定在专属FTP域名上的,没有直接绑定到应用的虚拟IP。

替代解决方案

如果FTPS配置遇到问题,也可以在Azure App Service部署中心开启SFTP功能,使用paramiko库的SFTP客户端连接,连接逻辑更简单,加密稳定性也更好。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:04