使用Paramiko连接到隐式SSL / TLS(端口990)?

时间:2015-08-03 07:58:26

标签: ftp sftp paramiko ftps fileshare

有没有办法使用Paramiko,连接到sharefile.com作为SFTP?

例如,使用这种方法,我可以连接到SFTP(我自己在Linux中创建的那个):

from paramiko import SSHConfig, SSHClient, AutoAddPolicy, AuthenticationException

def connect(self):
    for rec in self:

        with closing(SSHClient()) as ssh:
            ssh.set_missing_host_key_policy(AutoAddPolicy())
            try:
                login = rec.login_id
                ssh.connect(login.host, port=login.port, username=login.user, password=login.passwd)
            except socket.gaierror:
               raise ValidationError(_("Name or service '%s' not known") % (login.host))
            except AuthenticationException:
               raise Warning(_("Bad username or password"))                    
            with closing(ssh.open_sftp()) as sftp:
                #do something

但如果我尝试使用fileshare.com的登录信息进行连接,则无效。在fileshare.com中,它表示您可以通过两种方式连接:

安全性:标准(端口21)或隐式SSL / TLS(端口990)
FTP服务器:company.sharefileftp.com
用户名:username或username_id
密码:(您的ShareFile密码)

因此,如果我尝试使用端口990进行连接,我将获得连接定时(一段时间后)或此错误:

File "/usr/lib/python2.7/dist-packages/paramiko/client.py", line 306, in connect
    t.start_client()
File "/usr/lib/python2.7/dist-packages/paramiko/transport.py", line 465, in start_client
    raise e
SSHException: Error reading SSH protocol banner

我能够连接到它的唯一方法是使用Ubuntu内置GUI来连接FTP,使用:

ftp//:user@company.sharefileftp.com

如果我使用sftp,它将无法连接(我猜它使用默认端口22)

我也尝试从终端连接:

ftp user@company.sharefileftp.com
Name or service not known
sftp -oPort=990 user@company.sharefileftp.com
ssh_exchange_identification: Connection closed by remote host
Couldn't read packet: Connection reset by peer

1 个答案:

答案 0 :(得分:2)

安全FTP(FTP over TLS/SSL)不是SFTP

SFTP通过SSH运行。

您不能使用Paramiko连接到FTP,既不是普通FTP也不是TLS / SSL。

使用ftplib中的FTP_TLS类,用于Python中的FTP over TLS / SSL。