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