Не удалось установить SFTP-соединение socket.timeout? - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь подключиться к одному из наших серверов SFTP для автоматизации отчета.Мы извлекаем файл с этого сервера раз в неделю, и я не могу заставить эти соединения работать.Я не нахожу никаких полезных ссылок на приведенную ниже ошибку отслеживания.Кто-нибудь имеет представление о том, что может быть причиной этой проблемы?

Я получаю ошибку socket.timeout после 2 или 3 секунд выполнения кода.

import paramiko


cli = paramiko.SSHClient()

cli.set_missing_host_key_policy(paramiko.AutoAddPolicy())
cli.connect(hostname='AHOST', port=21, username="USER", password="PASS")

stdin_, stdout_, stderr_ = cli.exec_command("ls -l ~")
print(stdout_.readlines())

cli.close()

Трассировка:

Exception: Error reading SSH protocol banner
Traceback (most recent call last):
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 2138, in _check_banner
    buf = self.packetizer.readline(timeout)
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\packet.py", line 367, in readline
    buf += self._read_timeout(timeout)
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\packet.py", line 576, in _read_timeout
    raise socket.timeout()
socket.timeout

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 1966, in run
    self._check_banner()
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 2143, in _check_banner
    "Error reading SSH protocol banner" + str(e)
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner

Traceback (most recent call last):
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 2138, in _check_banner
    buf = self.packetizer.readline(timeout)
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\packet.py", line 367, in readline
    buf += self._read_timeout(timeout)
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\packet.py", line 576, in _read_timeout
    raise socket.timeout()
socket.timeout

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/user_name/PycharmProjects/PDD_Report/MAIN/MAIN.py", line 12, in <module>
    cli.connect(hostname='A40T', port=21, username="user_name", password="gate001")
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\client.py", line 397, in connect
    t.start_client(timeout=timeout)
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 587, in start_client
    raise e
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 1966, in run
    self._check_banner()
  File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 2143, in _check_banner
    "Error reading SSH protocol banner" + str(e)
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner

1 Ответ

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

Вы подключаетесь к FTP-порту 21.

SSH / SFTP использует порт 22 (значение по умолчанию для параметра port, который вы переопределяете).


Примечание 1: Ваш вопрос о SFTP.Однако вместо использования SFTPClient вы используете SSHClient и выполняете команды shell - это не имеет ничего общего с SFTP.


Примечание2: Не используйте AutoAddPolicy, как это.При этом вы теряете безопасность.
См. Paramiko "Неизвестный сервер" .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...