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
. Sea este punto de acceso público nuestroservidorremoto
. - 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. La dirección del servidor local relativa al servidor de Dacsa es nuestro
destino
.
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. La estructura general para un túnel de este tipo en SSH es:
ssh -L puertolocal:destino:puertodestino usuario@servidorremoto
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:
Accesos Clientes
En la carpeta compartida de Documentación
el archivo Accesos Clientes BD.ods
tiene un registro de los equipos clientes a los cuales se puede acceder vía túnel Para configurar una conexión de este tipo se puede tomar los datos del archivo y adaptar los puertos y direcciones remotas según sea necesario. Por ejemplo, si quisiéramos conectarnos al equipo de Facturación Electrónica de ByK para ver su base de datos:
- Vemos que la tabla indica que el equipo “Byk”, “Cliente Facturación” dice en la columna de Host “Túnel”, indicando que es posible entrar por un túnel usando el Host con la IP pública.
- Vemos que la IP pública está arriba, como Host del equipo “Byk”, “Servidor Central”. Esta IP es la que usamos como
servidorremoto
. - Dentro de la red local vemos que el equipo cliente de FE tiene IP “.2.252” en el segmento. Agregando el puerto para MySQL, tenemos el
destino:puerto
final para el túnel. - Escogemos un puerto local para establecer nuestro puente, en este caso escogeremos el
3333
.
Ya con estos datos podemos estructurar nuestra conexión túnel:
ssh -g -L 3333:192.168.2.252:3306 administrador@190.82.117.106
Notar como siempre el -g
es importante si queremos conectar otro programa, como el Query Browser, a través de este puerto.
El resultado final es un puente que podemos usar como se ve aquí: