Как подключиться к базе данных через туннель Paramiko (или аналогичный пакет)
У меня серьезные проблемы с настройкой правильного туннеля в paramiko для подключения к базе данных. Я рассмотрел пример forward.py, но не понимаю, как связать с ним соединение с базой данных. Любые указатели будут высоко оценены.
Я думаю, что мне нужно что-то следующее:
t = paramiko.Transport((hostname, port))
t.connect(username=username, password=password, hostkey=hostkey)
c = paramiko.Channel(t)
#something about assigning a local port to this connection
connection = psycopg2.connect(connectionstring)
#and do my stuff
connection.close()
c.close()
t.close()
2 ответа
Решение
Если вы создали свой ssh-туннель, используя скрипт forward.py; вы можете использовать туннель ssh для подключения к postgresql следующим образом:
conn = psycopg2.connect(database="test", host="localhost", port=<forward_port>)
У меня были те же серьезные проблемы, заставляющие работать paramiko, но в итоге я сделал это с другой библиотекой (sshtunnel), которая оборачивает и упрощает туннелирование paramiko.
Вы можете проверить мой ответ в другом подобном вопросе с некоторым примером кода, чтобы использовать его.