Vous pouvez utiliser ssh pour crypter la connexion réseau entre les clients et un serveur PostgreSQL™. réalisé correctement, ceci fournit une connexion réseau sécurisée, y compris pour les clients non SSL.
Tout d'abord, assurez-vous qu'un serveur ssh est en cours d'exécution sur la même machine que le serveur PostgreSQL™ et que vous pouvez vous connecter via ssh en tant qu'un utilisateur quelconque. ensuite, vous pouvez établir un tunnel sécurisé avec une commande comme ceci sur la machine cliente :
ssh -L 3333:foo.com:5432 joe@foo.com
Le premier numéro de l'argument -l, 3333, est le numéro de port de votre bout du tunnel ; il peut être choisi librement. Le second numéro, 5432, est le bout distant du tunnel : le numéro de port que votre serveur utilise. Le nom ou l'adresse entre les numéros de port est l'hôte disposant du serveur de bases de données auquel vous souhaitez vous connecter. Pour cela, vous vous connectez au port 3333 de votre machine locale :
psql -h localhost -p 3333 postgres
Sur le serveur de bases de données, il semblera que vous êtes réellement l'utilisateur joe@foo.com et il utilisera la procédure d'authentification adéquate pour cet utilisateur. Pour que la configuration du serveur réussisse, vous devez être autorisé à vous connecter via ssh en tant que joe@foo.com, comme si vous essayez d'utiliser ssh pour configurer une session terminal.
Plusieurs autres applications existantes peuvent fournir des tunnels sécurisés en utilisant une procédure similaire dans le concept à celle que nous venons de décrire.