Como se conectar a um banco de dados através de um túnel Paramiko (ou pacote similar)
-
27-09-2019 - |
Pergunta
Estou tendo problemas sérios na criação de um túnel adequado no Paramiko para ativar uma conexão de banco de dados. Eu revisei o exemplo 'Forward.py', mas não estou entendendo como vincular a conexão do banco de dados a ele. Quaisquer indicadores que sejam muito apreciados.
Eu acho que preciso de algo o seguinte:
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()
Solução
Se você criou seu túnel SSH usando o script forward.py; você pode usar o túnel ssh para conectar Para PostgreSQL assim:
conn = psycopg2.connect(database="test", host="localhost", port=<forward_port>)
Outras dicas
Eu também tive problemas sérios para fazer paramiko trabalhar, mas acabei fazendo isso com outra biblioteca (sshtunnel) que envolve e simplifica o tunelamento da Paramiko.
Você pode checar minha resposta Em outra pergunta semelhante, com algum código de amostra para usá -lo.