Указывать порт в строке подключения pysftp не просто - PullRequest
0 голосов
/ 22 ноября 2018

Это работает:

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None

with pysftp.Connection('ftpsite.com', username='xxx', password='xxx', cnopts=cnopts) as sftp:
    with sftp.cd('inbox'):             
    sftp.get('WinSCP.ini')  

Но теперь я хочу протестировать прямой ftp (порт 21), поэтому я добавляю атрибут порта:

with pysftp.Connection('ftpsite.com', port=21 , username='xxx', password='xxx', cnopts=cnopts) as sftp:

и теперь я получаю это:

Исключение: paramiko.ssh_exception.SSHException Сообщение: Ошибка чтения баннера протокола SSH

Я в замешательстве ...

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Библиотека pysftp общается только по протоколу SFTP, который отличается от «обычного» протокола FTP.Итак, вы видите ошибку, когда ваша программа пытается установить связь по протоколу SFTP с FTP-сервером и не понимает ответ, который она получает.

0 голосов
/ 22 ноября 2018

SFTP использует SSH, поэтому его ПОРТ 22, а не 21

FTP использует порт 21

Как и в случае указанной ошибки, исключение ssh.Попробуйте использовать 'port = 22'

source:

port 21     Yes, and SCTP   Assigned    Official    File Transfer Protocol (FTP) control (command)


port 22     Yes, and SCTP   Assigned    Official    Secure Shell (SSH), secure logins, file transfers (scp, sftp) and port forwarding 

wikipedia

...