Я пытаюсь подключиться к удаленному подключению к серверу, а затем получить доступ к его локальной базе данных с помощью python. Я успешно подключаюсь к серверу, хотя я не могу подключиться к базе данных на сервере. Мой код ниже:Подключение к базе данных Postgresql через туннелирование SSH в Python
import psycopg2
from sshtunnel import SSHTunnelForwarder
try:
with SSHTunnelForwarder(
('<server ip address>', 22),
ssh_private_key="</path/to/private/ssh/key>",
ssh_username="<server username>",
remote_bind_address=('localhost', 5432)) as server:
print "server connected"
conn = psycopg2.connect(database="<dbname>",port=server.local_bind_port)
curs = conn.cursor()
print "database connected
except:
print "Connection Failed"
Это фрагменты кода, который я нашел в Интернете. Я также попытался заявление соединения ниже вместо Соединит те выше:
params = {
'database': '<dbname>',
'user': '<dbusername>',
'password': '<dbuserpass>',
'host': 'localhost',
'port': 5432
}
conn = psycopg2.connect(**params)
Я знаю, что может подключиться к базе данных, потому что на моей машине; Я могу использовать sqlectron
для туннелирования и подключения соответствующим образом.
На всякий случай непонятно, что я пытаюсь сделать сверху, мне нужно, чтобы ssh туннель на моем удаленном сервере, используя приватный ключ ssh на моем компьютере (правильно работает), а затем мне нужно подключиться к База данных PostgreSQL, которая находится на localhost
в порту 5432
.
В настоящее время я получаю текущее сообщение об ошибке для обоих способов пытается соединиться:
2016-01-23 11:16:10,978 | ERROR | Tunnel: 0.0.0.0:49386 <> localhost:5432 error: (9, 'Bad file descriptor')
Я попробовал код выше, но я вижу следующее сообщение об ошибке 'HandlerSSHTunnelForwarderError: В # 1 <- ('127.0.0.1', 53281) в ('10 .160.1.24' , 5432) не удалось: ChannelException (2, «Не удалось подключиться»). Любая идея, что я могу делать неправильно? –