python - 无法使用 certfile (python) 与 FTP 建立 SSL 连接
问题描述
我正在尝试使用 ftplib 与 FTP 服务器建立连接。我收到了两个文件,一个扩展名为 .crt 的证书和一个 PEM 格式的证书(RSA KEY + 证书)。
我正在使用 PEM 格式的证书使用以下代码创建上下文:
import ssl
from ftplib import FTP_TLS
ssl_context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
ssl_context.load_cert_chain('./certificate3')
ftps = FTP_TLS(context = ssl_context)
ftps.connect(host, porta)
ftps.login(user = user, passwd = pwd)
ftps.prot_p()
ftps.nlst()
如果我删除最后一个命令 ( nlst
),我会收到响应:'230 Logged on'。因此,当我尝试使用nlst()
命令提取 FTP 中的文档列表时,我收到一条错误消息:
TimeoutError: [WinError 10060] A connection attempt failed because the connected component did not respond
correctly after a period of time or the established connection has failed
because the connected host did not respond
有谁知道出了什么问题以及如何修复代码以建立连接?
解决方案
我可以用 WinSCP 建立与 FTP 服务器的连接。通过 WinSCP,我可以运行一个脚本来将服务器与我的本地目录同步。您可以在下面找到命令:
option batch abort
option confirm off
open ftp://user:password@hostserver:port -hostkey="SHA256 KEY"
synchronize local local_path remote_path
exit
此命令必须在 .txt 文件中,并通过 .bat 文件执行此命令。
希望我能帮助其他人解决同样的问题。
推荐阅读
- amazon-web-services - AWS Cloudwatch、S3 和日志记录解决方案协助
- javascript - findOne 不是函数 mongoose
- c - c 接收/发送同一个套接字
- dictionary - 如何在朱莉娅中更改字典的键?
- django - wkhtmltopdf - [WinError 2] 系统找不到指定的文件
- django - 在 django 中加入多个表
- typescript - RXJS - 同时订阅 2 个 Observables 并获取两个值
- navigation - 如果使用 jetpacks 导航方法,使用连接的 Room 数据库进行 Backstack 处理不会删除对话框片段中的项目
- r - 如何避免R中的重复代码
- linux - add-apt-repository:无法执行 /usr/bin/add-apt-repository:符号链接的级别太多