Psycopg2 accès PostgreSQL databese sur l'hôte distant sans l'ouvrir manuellement le tunnel ssh

Ma procédure standard de PostgreSQL pour accéder à une base de données sur un serveur distant est ouvert d'abord créer un tunnel ssh:

ssh username1@remote.somewhere.com -L 5432:localhost:5432 -p 222

puis exécute ma requête en python à partir d'un autre shell que:

conn = psycopg2.connect("host=localhost" + " dbname=" +
                         conf.dbname + " user=" + conf.user + 
                         " password=" + conf.password)

cur = conn.cursor()

cur.execute(query)

Ce morceau de code python fonctionne très bien, une fois que le tunnel est créé. Cependant, je voudrais psycopg2 à déjà ouvert le tunnel SSH ou à portée de main "en quelque sorte" à la base de données à distance sans avoir besoin de le rediriger sur mon localhost.

Est-il possible de faire cela avec psycopg2?

Est par ailleurs possible d'ouvrir le tunnel ssh dans mon code python?

si j'utilise:

os.system("ssh [email protected] -L 5432:localhost:5432 -p 222")

Le shell va être redirigé vers l'hôte distant blocage de l'exécution du thread principal.

Pourquoi ne pas simplement utiliser SSL sur le serveur PostgreSQL, et de se connecter à PostgreSQL de la prise en charge de SSL?

OriginalL'auteur Luca Fiaschi | 2014-02-26