首页 > 解决方案 > 无法使用 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

有谁知道出了什么问题以及如何修复代码以建立连接?

标签: pythonftpftplib

解决方案


我可以用 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 文件执行此命令。

希望我能帮助其他人解决同样的问题。


推荐阅读