Подключиться к неявному SSL / TLS (порт 990) с помощью Paramiko?

Есть ли способ использовать 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_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, встроенного в графический интерфейс для подключения к FTP, используя:

ftp//:[email protected]

Если бы я использовал sftp, он не подключился бы (я предполагаю, что он использует порт по умолчанию 22)

Еще пробовал подключиться с терминала:

ftp [email protected]
Name or service not known
sftp -oPort=990 [email protected]
ssh_exchange_identification: Connection closed by remote host
Couldn't read packet: Connection reset by peer

person Andrius    schedule 03.08.2015    source источник


Ответы (1)


Безопасный FTP (FTP через TLS / SSL) не является SFTP.

SFTP работает по SSH.

Вы не можете использовать Paramiko для подключения к FTP, ни через простой FTP, ни через TLS / SSL.

Используйте класс FTP_TLS из ftplib для FTP через TLS / SSL в Python.

person Martin Prikryl    schedule 03.08.2015
comment
Спасибо, тогда попробую воспользоваться этой библиотекой. - person Andrius; 03.08.2015