Как установить тайм-аут подключения к sshtunnel - PullRequest
0 голосов
/ 22 апреля 2019

Я использую SSHTunnelForwarder из модуля sshtunnel на python.

С учетом следующего кода:

server = SSHTunnelForwarder(
    (sshServer, sshPort),
    ssh_username=sshUsername,
    ssh_password=sshPassword,
    remote_bind_address=(imapServer, imapPort),
    local_bind_address=('127.0.0.1', localPort)
)

print('STARTING')

server.start()

print(server.is_active)

Иногда это занимает очень много времени, может быть, несколько минут, и тогда я получаю сообщение об ошибке:

2019-04-22 22:25:54,365| ERROR   | Could not connect to gateway ip..... : 110
Traceback (most recent call last):
  File "PYTHON_TUNNEL.py", line 24, in <module>
    server.start()
  File "/home/mike/.local/lib/python2.7/site-packages/sshtunnel.py", line 1295, in start
    reason='Could not establish session to SSH gateway')
  File "/home/mike/.local/lib/python2.7/site-packages/sshtunnel.py", line 1101, in _raise
    raise exception(reason)
sshtunnel.BaseSSHTunnelForwarderError: Could not establish session to SSH gateway

Ubuntu 18.04, python 2.7

Можно ли установить тайм-аут для установления туннеля?

1 Ответ

1 голос
/ 23 апреля 2019

Существует константа SSH_TIMEOUT со значением по умолчанию None в sshtunnel.py, которое установлено в сокете , используемом для создания транспорта перед вызовом connect в нем.,

К сожалению, я сам не могу проверить это, но вы можете попробовать исправить эту константу перед запуском туннельного экспедитора:

import sshtunnel

sshtunnel.SSH_TIMEOUT = 5.0

server = sshtunnel.SSHTunnelForwarder([...])    
server.start()

Также есть TUNNEL_TIMEOUTконстанта, но, похоже, она используется для проверки, установлен ли туннель и для вызова open_channel на базовом экземпляре Paramiko Transport .Похоже, что это не играет роли при создании туннеля.
Плюс, TUNNEL_TIMEOUT по умолчанию установлен на одну секунду, и когда у вас возникают минутные задержки на server.start() до повышения BaseSSHTunnelForwarderErrorКажется маловероятным, что эта константа имеет отношение к решению вашей проблемы.

...