Hace días me encontré con un problema en el trabajo necesitaba hacer modificaciones a una aplicación web que esta hecha en base a procedimientos almacenados los cuales están bajo la responsabilidad del DBA, por lo que tendría que trabajar directamente en ese servidor o ir subiendo los cambios de mi maquina local .. Así que comencé a pensar en buscar una alternativo en poder trabajarlo localmente y pero conectándome directamente a la base de datos que están en el servidor a la cual el DBA iría a actualizar ....

Lo primero que intente fue esto

psql -h 10.10.50.10 -p 5432 -U postgres

conectarme directamente por el puerto de postgres pero lamentablemente el puerto no estaba habilitado para entrar desde afuera y tampoco lo habilitarían  ...

Lo segundo que pensé fue crear una VPN pero  al final lo descarte por que era muy engorroso para mi, tampoco tenia mucho tiempo y tendría que pedir permisos de ROOT  para hacer instalaciones necesarias.

Finalmente buscando en Internet dentro de la documentación de postgres encontré la solución  https://www.postgresql.org/docs/8.2/static/ssh-tunnels.html

Ya que para entrar al servidor me conecto por ssh ahi mismo esta la solucion

Crear un tunel ssh desde mi maquina local al remoto ¿y como se hace esto?

Abrimos una terminal y ejecutamos lo siguiente

ssh -L 3333:10.10.50.10:5432 zelti@10.10.50.10

10.10.50.10 es la ip del servidor remoto 5432 corresponde al puerto del postgres en el servidor remoto y 3333 es el puerto que se crea en mi maquina para acceder a postgres

Luego nos conectamos como si fuera una conexión local  en una segunda terminal ejecutamos

psql -h localhost -p 3333 postgres
y wuala!!! nos conectamos cono si fuera una conexión local estos mismos datos podemos meterlos en cualquier aplicación y las tomara sin problemas

Nota: No debemos cerrar la primera terminal que abrimos si no se caerá la conexión