Creando túneles SSH y SCP

Nota: para quienes estén dando ARI y Base de Datos en la UTFSM, esta información es fundamental para quienes no lo sepan. Pasen el dato y guárdenlo para futuras generaciones de sansanos informáticos.

Ahora bien, ¿qué es un túnel SSH? En resumen: es un paso entre una conexión local y una conexión remota por medio de una intermediaria. ¿En extenso? Es cuando queremos conectarnos a un servidor remoto pero para ello necesitaremos conectarnos a otro antes. El túnel abre paso entre esas 2 conexiones pasando por la intermediaria. Ok, mucho tecnicismo los confunde, ¿veamos un ejemplo?

Si estamos dentro de la UTFSM, específicamente en la red del DI, podemos conectarnos directamente al servidor de Tareas (tareas.inf.utfsm.cl) mediante SSH. ¿Pero y si estamos fuera de ella, especialmente en cualquier lugar fuera de la UTFSM? No se puede, ya que el servidor de Tareas sólo permite conexiones dentro del DI. Sin embargo, podemos crear un túnel SSH, que permitirá que la máquina intermediaria (como el servidor SSH del DI) crea un paso entre la máquina local (nosotros, por ejemplo) y el servidor de Tareas sin tener que darnos el trabajo de loguearnos por nuestra cuenta SSH para loguearnos al servidor de Tareas desde ahí. En concreto, considerando que el servidor SSH del DI, por ejemplo, es ssh2.inf.utfsm.cl, y el servidor de Tareas es tareas.inf.utfsm.cl, la paja es:

ssh usuariodellabcomp@ssh2.inf.utfsm.cl

Y una vez adentro, con nuestra contraseña, debemos hacer esto:

ssh logintareas@tareas.inf.utfsm.cl

Imagínense si hiciéramos algo parecido con scp. Más paja aún porque tenemos que andar recordando en qué directorio dejar nuestros archivos que transferamos.

Ahora vamos a solucionar ese problema por medio de un túnel SSH.

Primero, creamos el túnel para ahorrarnos este trabajo.

Abrimos una terminal y escribamos esto:

ssh -L 6666:tareas:22 ssh2.inf.utfsm.cl -l logindellabcomp

¿Qué hicimos acá? Bueno, convertimos el puerto local 6666 en el puerto 22 del SSH y abrimos paso entre el ssh del Labcomp y el servidor de Tareas. En pocas palabras: el túnel está hecho. ¿Porqué puse sólo “tareas”? Porque tanto tareas como ssh2 (y el servidor alternativo, ssh3) pertenecen al mismo dominio, así que no es necesario colocar todo el nombre de la máquina 😉 Hay 2 cosas importantes que destacar en este comando: 1- Nótese la diferencia entre la opción “-L” (mayúscula, para referirnos a la máquina) y “-l” (minúscula, para referirnos al login); y 2 – NO deben cerrar la terminal donde hayan ejecutado este comando. Si lo hacen, el tunel morirá, la conexión se perderá y no podemos conectarnos remotamente a la otra máquina. Quedando advertidos de esto, pasaremos al siguiente paso.

Abrimos otra terminal (sin cerrar la otra, insisto), y escribamos este comando para loguearnos “directamente” a la máquina destino, o sea, el servidor de Tareas:

ssh -p 6666 localhost -l loginparalatarea

Ahí especificamos el puerto 6666 que usamos, que es la máquina local conectada al túnel, y especificamos el login que nos dieron para la tarea (u otro distinto). Ingresan la password y… voilà! Habemus conexión “directa” al servidor remoto (Tareas) usando un túnel y ahorrándonos mucho trabajo 😀

Pero… ¿y si quiero transferir un archivo? Bueno, sin cerrar la primera terminal (volviendo a insistir de hace rato) primero, si estamos logueados con el ssh “directo”, nos salimos, y luego, ejecutamos scp de la siguiente manera (no olviden que localhost siempre se usa :D) :

scp -P 6666 archivodeorigen usuario@localhost:rutadondequeremostransferir

Y si es un directorio:

scp -P 6666 -r directorio usuario@localhost:rutadondequeremostransferir

Por ej: si queremos transferir archivos “directamente” al servidor de Tareas al home, usaríamos:

scp -P 6666 algo.sql usuariodetareas@localhost:~

Y si queremos transferir un directorio local a otro directorio en el servidor de Tareas:

scp -P 6666 directorio usuariodetareas@localhost:~/otrodirectorio

Así nos facilitamos el trabajo de andarnos logueando anidadamente y haciéndonos esto algo más liviano. Y nos pasamos la restricción del Labcomp bien por el orto xD

Nótese que todo esto es válido bajo ambiente Unix (Linux, MAC OS X, BSD, etc.)… ¿Y Window$? Bueno, como ya perdí algo la costumbre con ese sistema operativo, es hora de que este trabajo lo investiguen ustedes mismos 😉

Aprovechando la ocasión, les recomiendo, para la tarea de ARI y Base de Datos, probar localmente montando su propio servidor de base de datos y crean su usuario y luego lo prueban remotamente, ya que por algún motivo, no puedo conectarme a la base de datos remota de Tareas :C Véanse este tutorial para instalar y montar su propio servidor local de PostgreSQL o googleen 😀

Espero que les sea de ayuda 😀

Jorgicio

2 pensamientos en “Creando túneles SSH y SCP

    1. En todo caso, hice un tutorial que debes seguir los mismos pasos pero con cosas adicionales. Busca por “Autossh” en mi blog y te ahorrarás ese trabajo de tener la consola abierta 😉

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *