Как подключиться к базе данных через туннель 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()

person mvrak    schedule 28.10.2010    source источник


Ответы (2)


если вы создали свой ssh-туннель с помощью сценария forward.py; вы можете использовать ssh-туннель для подключения к postgresql следующим образом:

conn = psycopg2.connect(database="test", host="localhost", port=<forward_port>)
person mouad    schedule 28.10.2010
comment
Я знаю, что это правильно, я просто неправильно использую forward.py. - person mvrak; 28.10.2010
comment
Оказывается, я не уверен, почему я думал, что это подходит для моего использования. Мне лучше поддерживать туннель через внешнюю программу ssh, чем пытаться настроить его на Python. - person mvrak; 03.11.2010

У меня были такие же серьезные проблемы с запуском paramiko, но в итоге я сделал это с другой библиотекой (sshtunnel), которая обертывает и упрощает туннелирование paramiko.

Вы можете проверить мой ответ на другой похожий вопрос с некоторым образцом кода для его использования.

person jsjc    schedule 26.07.2015