Esta es el arreglo más exacta que encomtrarás aportar, pero primero estúdiala detenidamente y valora si se adapta a tu trabajo.
Solución:
Utilizar el psycopg2
módulo.
Deberá usar las opciones SSL en su conexión stringo agregarlos como key argumentos de palabra:
import psycopg2
conn = psycopg2.connect(dbname='yourdb', user='dbuser', password='abcd1234', host='server', port='5432', sslmode='require')
En este caso sslmode
especifica que se requiere SSL.
Para realizar la verificación del certificado del servidor, puede configurar sslmode
para verify-full
o verify-ca
. Debe proporcionar la ruta al certificado del servidor en sslrootcert
. También establezca el sslcert
y sslkey
valores a su certificado de cliente y key respectivamente.
Se explica en detalle en la documentación de Cadenas de conexión de PostgreSQL (consulte también Palabras clave de parámetros) y en Compatibilidad con SSL.
También puede usar un túnel ssh con paramiko y sshtunnel:
import psycopg2
import paramiko
from sshtunnel import SSHTunnelForwarder
mypkey = paramiko.RSAKey.from_private_key_file('/path/to/private/key')
tunnel = SSHTunnelForwarder(
(host_ip, 22),
ssh_username=username,
ssh_pkey=mypkey,
remote_bind_address=('localhost', psql_port))
tunnel.start()
conn = psycopg2.connect(dbname='gisdata', user=psql_username, password=psql_password, host='127.0.0.1', port=tunnel.local_bind_port)
Calificaciones y comentarios
Recuerda que te brindamos la opción de aclarar si te fue de ayuda.