martes, 20 de julio de 2010

Barajitas premiadas (#8) - SSH port forwarding

La barajita de hoy tiene un valor sentimental importante para mi... jejejeje

Esta sí que la he utilizado bastante y no me canso de bendecirla. La explico con un ejemplo para que se entienda más fácil...

Imagine que está en un entorno de desarrollo donde usted tiene su máquina y accesso vía SSH al servidor de Calidad. Este servidor está protegido con un firewall y no puede acceder desde su máquina a otro puerto del mismo, que no sea el 22 (puerto SSH por omisión).

La cuestión surge cuando usted, que tiene acceso vía SSH, desea conectarse a la BD PostgreSQL que está corriendo en ese servidor desde su máquina, usted necesita acceder al puerto 5432 (puerto PostgreSQL por omisión) y sabe que cuando está conectado al servidor de forma local tiene acceso, pero de forma remota no. Entonces...

Usted puede crear un tunel (además sobre SSH - cifrado) y establecer una correlación entre un puerto local y el puerto remoto!! Creada la correlación, se conectaría a la BD como de forma local, pero realmente SSH estaría enviando toda la info al puerto en la máquina remota... qué fácil ah? Veamos cómo podría resolver el problema que he comentado.

$ ssh -NL 1234:localhost:5432 a@example.com & 
$ psql -h localhost -p 1234 mydb myuser

El primer comando, crea una conexión SSH entre los puertos local 1234 y remoto 5432 (opción -L) para el usuario a del servidor (example.com). Utilizo la opción -N para que no sea iniciada una consola remota y &.para que el proceso quede en background.

Luego, inicio una conexión con la BD como si fuese local para el usuario myuser y la BD mydb.


2 comentarios: