¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Túnel de Conexión SSH
Escenario:
“Quiero conectarme al equipo de Facturación Electrónica de Montana, para ver la base de datos. Pero no tenemos acceso directo a ese equipo dentro de la red y justo hoy el Supremo cayó a nivel mundial, todo el primer piso de Prat está en reunión tomando café, y los indígenas se tomaron Luis Durand y Pedro de Valdivia así que tampoco podemos ir físicamente al local”
Pero por suerte:
- Prat tiene IP pública, a la cual tenemos conectado un acceso SSH.
- Podemos mentalizar y esquematizar nuestra la red de Prat.
Esquema
- Verde: Puertos abiertos entre el gateway de Prat (la IP pública) y el servidor (.1.100).
- Rojo: el camino o túnel que construiremos vía SSH.
Procedimiento
Prat tiene IP fija, la cual se puede obtener desde la carpeta de Documentación de Helpcom. Si es posible, es conveniente agregarla como atajo a nuestro archivo de Hosts (ej.: LMHOSTS
o %WINDOWSDIR%\SYSTEM32\DRIVERS\ETC\hosts
en Windows; /etc/hosts
en Linux) para tenerlo siempre al alcance, por medio de la creación de un .tld local:
190.121.105.243 dacsa-central.local
.local
.
Teniendo en cuenta el diagrama de red superior podemos ver lo siguiente:
- Tenemos acceso directo a la red pública de Dacsa por medio de su IP pública:
190.121.105.243
. - En esa IP pública, tenemos un puerto de SSH abierto que nos lleva al servidor de Prat.
- Desde el servidor de Prat, podemos ver Montana en la misma subred.
Sólo con estos datos, podemos construir nuestro túnel. Abriremos el túnel en el puerto local 25000
y nos llevará al puerto remoto 3306 del equipo de Montana.
Linux / SSH
ssh -g -L 25000:192.168.1.252:3306 administrador@190.121.105.243 # o, si grabamos la IP de Prat en nuestros hosts: ssh -g -L 25000:192.168.1.252:3306 administrador@dacsa-central.local
El resultado del túnel es la conexión que muestra el diagrama en rojo:
- Nuestro equipo se conectará al servidor de Prat directamente, por medio del puerto abierto en el gateway, al puerto 22 del servidor (SSH).
- Al recibir la conexión, nuestro equipo requerirá abrir un segundo puerto local (para él)
25000
. Al recibir la conexión de este puerto el servidor lo enlazará a la conexión local (para él)192.168.1.252:3306
. - La opción
-g
en nuestro túnel permite que el puente permanezca abierto y se puedan conectar aplicaciones locales (para nosotros) a este túnel, por ejemplo Query Browser / SQLYog. - Para el servidor de Montana, la conexión parece venir directo del servidor de Prat.
Ahora que la conexión está activa, podemos conectarnos con un cliente de MySQL a nuestro puerto local, y esto nos dará acceso a la conexión en el servidor remoto. Simplemente en nuestro cliente, o en otra sesión/ventana de terminal si queremos conectar con el cliente de consola:
mysql -h 127.0.0.1 --port 25000 -u helpcom_db -p db_dte_montana
Windows / KiTTY
Para este proceso es conveniente (si no necesario) que tengamos un perfil grabado en KiTTY para el servidor de Prat (o el que vayamos a usar). Cargamos este perfil con Load, lo cual nos pasa los parámetros (servidor, puerto, VT100, etc) a las pantallas de configuración.
En el árbol de configuración de KiTTY vamos a Connection → SSH → Tunnel. Aquí es donde agregamos el túnel como aparece en la imagen con los siguientes parámetros:
[ ] Remote ports do the same
- deshabilitado.- Source port:
25000
. - Destination:
192.168.1.252:3306
. [✔] Local [ ] Remote [ ] Dynamic
.- Hacemos clic en
Add
para agregar nuestro túnel a la lista.
Una vez seteado el túnel iniciamos nuestra conexión. Nos pedirá las credenciales del servidor de puente (en este caso Prat). Una vez que queda la ventana de terminal abierta el túnel queda establecido.
Ya con el puente configurado, podemos conectarnos a la base de datos con nuestro cliente de MySQL, por ejemplo Yog / Query Browser: