Travailler avec Qgis sur base postgis Distante

À Fractale, nous avons parfois besoin de faire des incursions dans des bases de données distantes, que ce soit pour notre interface de démo: fractale.space ou pour d’autres opérations.

Dans nos missions, nous sommes souvent amenés à faire des travaux en local sur une table pour ensuite venir l’intégrer sur le serveur. Pour cela, il faut bien accéder à la base et s’y connecter pour vérifier que tout fonctionne bien.

On pourrait s’imaginer exposer postgresql sur internet pour facilement se connecter, mais cela signifie ouvrir un accès sur un serveur et pose la question de la sécurisation de celui-ci. Nous préférons donc travailler avec SSH.

exemple de mauvaise configuration d’une base postgres sur internet

Une des options qui existe alors pour ces travaux est la réalisation de dump SQL depuis l’interface de ligne commande ou depuis pgadmin3 puis du transfert via SSH de ces données.

Au lieu de jouer avec des dumps POSTGRES, de les transférer en ssh, nous avons regardé la faisabilité d’un pont SSH¹

Par chance, un utilisateur de Qgis anglophone s’est posé la même question et a écrit un article de blog pour expliquer sa méthode:

Connecting to a Remote PostGIS Backend Over SSH With QGIS

Voici l’adaptation francophone de ce tutoriel. Merci à tripGIS pour les ressources.

Créer un tunnel SSH sous linux:

Créez votre clef SSH (si vous n’en n’avez pas)

la clef ssh est une paire de clef public/privée Explication dans cette vidéo du principe

ssh-keygen -b 4096 -t rsa

ici, je demande une clef avec l’algorithme de chiffrement RSA et une taille de 4096 bits (une taille suffisante en vue de la puissance de calcul des ordinateurs actuels).

Copiez vote clef publique sur votre serveur afin qu’il puisse vous reconnaître. le port indiqué par l’option ‘-p’ est à renseigner si vous n’utilisez pas le port 22 (par défaut)

ssh-copy-id user@remote.com [-p port_num]

Enregistrez la config ssh pour un accès facile

Ouvrez le fichier de configuration SSH

nano ~/.ssh/config

Ajoutez les lignes suivantes au fichier et quittez+enregistrez (ctrl+x)

Host ssh_postgis
	HostName 123.456.789.0 (remote server IP or domain name)
	User username
	Port 2222

Ajoutez la connexion Postgis à QGis

Dans cette partie, vous indiquerez à Qgis la manière de vous connecter à la base postgis Distante.

Dans un terminal, entrez la commande suivante et gardez la fenêtre ouverte tout au long de la session. Ce tunel se connecte donc par SSH au port local 5432 du serveur et expose sur votre ordinateur le port 9999 (vous pouvez le modifier).

ssh -L 9999:localhost:5432 ssh_postgis

Ouvrez par la suite Qgis et cliquez sur ‘Ajouter une couche PostGIS’

Par la suite, vous pouvez renseigner les informations de connexion. Celles présentées ci-dessous sont dans le cas de notre configuration actuelle.postgis-settings

Il est possible de cliquer sur ‘test’ pour voir si la connexion fonctionne. En cliquant sur ‘OK’, cela sauvegardera la connexion.

La base étant distante, les données prendront du temps à charger.

Si vous voulez charger de grosses table sur votre connexion, nous vous déconseillons d’utiliser cette méthode, Qgis adore se figer si vous lui en demandez trop. Retour aux sources, un PG_DUMP avec un RSYNC et une intégration via PSQL et l’affaire est dans le sac.

 

Pour info  il est possible de créer un tunel ssh sur d’autres plateformes:

https://korben.info/wiki/tunnel_ssh

 

 

¹ssh est une méthode utilisée pour se connecter ‘simplement’ à un serveur et ainsi réaliser des opérations sur celui-ci. Si cela n’est pas assez clair, imaginez  TEAMVIEWER en ligne de commande.

Next Post

Previous Post

Leave a Reply

© 2018

Theme by Anders Norén