【发布时间】:2017-04-07 13:30:01
【问题描述】:
我正在使用 Python 2.7。 我最近使用端口 990 成功建立了与我的 ftp 站点的连接。但是,我需要切换到端口 22 的站点有一个未更新。所以我所做的只是将端口号从 990 更改为 22。但是,在我是不是我得到了错误:
[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:661)
我已尝试检查其他类似的帖子,这些帖子建议将 https:// 附加到该站点。我使用的是 FTP 而不是 url,所以这对我来说是不可能的。我也尝试将 ssl_version 更改为 ssl.PROTOCOL_SSLv23 但收到以下错误:
[SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:661)
这是我提供的完整代码。有谁知道问题是什么?感谢您的帮助。
from ftplib import FTP_TLS
import socket
import ssl
class tyFTP(FTP_TLS):
def __init__(self, host='', user='', passwd='', acct='', keyfile=None, certfile=None, context=None, timeout=60):
FTP_TLS.__init__(self, host, user, passwd, acct, keyfile, certfile, context, timeout)
def connect(self, host='', port=0, timeout=-999):
if host != '':
self.host = host
if port > 0:
self.port = port
if timeout != -999:
self.timeout = timeout
try:
self.sock = socket.create_connection((self.host, self.port), self.timeout)
self.af = self.sock.family
self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile, ssl_version=ssl.PROTOCOL_TLSv1)
# self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile, ssl_version=ssl.PROTOCOL_SSLv23)
self.file = self.sock.makefile('rb')
self.welcome = self.getresp()
except Exception as e:
print e
return self.welcome
FTP_SITE = "sftp.MySite.com"
UPLOAD = {
"USERNAME": "username",
"PASSWORD": "password"
}
DOWNLOAD = {
"USERNAME": "username",
"PASSWORD": "password"
}
server = tyFTP()
# changed from 990. 990 works with no issues.
server.connect(host=FTP_SITE, port=22)
【问题讨论】:
-
他们是否有可能恢复到普通的旧 FTP 而不是 SFTP。您是否尝试过不使用 SSL 访问服务器?
-
他们向我保证他们正在使用 SSL 迁移到 SFTP。
-
SFTP 不使用 SSL,而是使用 SSH。