У меня есть фрагмент кода, который позволяет мне подключаться к моей базе данных psql через ssh в Python. Он отлично работает в Ubuntu 18.10 (через VirtualBox), но каждый раз дает сбой в Windows с ошибкой, что он не может достичь удаленного хоста и порта.
Я занимаюсь разработкой пользовательского интерфейса, который может запрашивать данные из удаленной БД (журналы и т. Д.) И визуализировать их.
Вся разработка была сделана с использованием Spyder3 в Ubuntu 18.10. У меня никогда не было проблем, пока я не попытался выполнить тот же код в Windows 10.
Я попытался использовать Telnet как для localhost: port, так и для remote host: port (через ssh), и это работает. Посмотрев все возможные ответы на stackoverflow и другие места, я все еще не смог решить проблему. Тот факт, что он работает в одной среде, а не в другой, в то время как на одной и той же машине, говорит мне, что это какая-то настройка среды, но я не знаю, что это может быть.
Код:
import psycopg2
import logging
logging.basicConfig(level=logging.DEBUG)
from sshtunnel import SSHTunnelForwarder
PORT = 5432
REMOTE_HOST = '111.222.111.222'
REMOTE_SSH_PORT = 22
curs = None
conn = None
server = SSHTunnelForwarder((REMOTE_HOST, REMOTE_SSH_PORT),
ssh_username='username',
ssh_password='password',
remote_bind_address=('localhost', PORT),
local_bind_address=('localhost', PORT))
server.start()
conn = psycopg2.connect(database='db_name', user='db_username', password='db_password', host='127.0.0.1', port='5432')
curs = conn.cursor()
Ожидаемое:
Успешное подключение к ssh и последующий успешный вход в базу данных. Это работает в Ubuntu 18.10 через VirtualBox на той же машине.
Фактический результат:
2019-01-02 10: 54: 51,489 ОШИБКА Неполадка при настройке SSH Forwarder up: не удалось открыть туннель localhost: 5432 <> localhost: 5432 может использоваться или пункт назначения недоступен