La idea de construir un túnel SSH es encriptar todas las conexiones (sin importar, por ejemplo, si entrás a una página https o http) y conectarnos a Internet a través de un canal seguro. Este canal "seguro" no es otra cosa que un servidor configurado a tal efecto. Dicho servidor podría encontrarse, por ejemplo, en tu casa.
La "desventaja" de este método es que siempre tenés que tener esta máquina encendida y configurada correctamente para que funcione como servidor SSH pero te permite mejorar sustancialmente la seguridad de tu conexión e incluso evadir las restricciones de conexión impuestas por los administradores de la red (por ejemplo, la de tu trabajo).
Te escucho preguntar: ¿esto realmente me puede servir? Bueno, supongamos el siguiente escenario: estás en un cibercafé o en un restaurant con wifi libre y necesitás realizar una transferencia bancaria u otra operación importante. Por supuesto, siempre se recomienda realizar este tipo de transacciones en un ambiente seguro. Sin embargo, existe una solución: un túnel SSH. De este modo, podemos conectarnos a Internet a través de nuestro servidor "seguro".
Este método también es útil para evadir las restricciones impuestas en las conexiones de muchos ambientes de trabajo. ¿No podés acceder a Youtube desde el trabajo? Bueno, un túnel SSH puede ser la solución, ya que todas las solicitudes se realizarán a través de tu servidor "seguro". En otras palabras, al no estar bloqueda la IP de tu servidor seguro (sí, en cambio, la de Youtube) vas a poder "evadir" esta restricción (no poder acceder a Youtube) ya que para el administrador de la red de tu empresa tu máquina sólo estuvo conversando con tu servidor "seguro" y no tiene idea de que a través de él vos en realidad estás navegando por un montón de páginas.
En este tutorial vamos a explicar el caso "típico": servidor Linux, cliente Windows.
Configurar el servidor Linux
1.- Instalar el servidor SSH. Para ello, abrí un terminal y ejecutá:
En Ubuntu:
sudo apt-get install openssh-server
En Arch:
pacman -S openssh
En Fedora:
yum -y install openssh-server
Listo. Ya vas a poder acceder al (servidor SSH) Ubuntu con un cliente SSH.
2.- Una vez instalado, es útil revisar el archivo de configuración:
sudo nano /etc/ssh/sshd_config
Desde este archivo vas a poder configurar tu servidor SSH a gusto. Mi recomendación es modificar apenas 2 parámetros: port y allowusers.
Para evitar posibles ataques es recomendable cambiar el puerto que utilizará SSH. Por defecto viene con el valor 22, podés elegir otro que más te convenga (a los efectos de este tutorial elegimos el 443 pero puede ser cualquier otro).
El parámetro Allowusers permite restringir el acceso por usuario y, opcionalmente, el anfitrión desde el cual puede conectarse. El siguiente ejemplo restringe el acceso hacia el servidor SSH para que sólo puedan hacerlo los usuarios fulano y mengano desde los anfitriones 10.1.1.1 y 10.2.2.1.
AllowUsers fulano@10.1.1.1 mengano@10.1.1.1 fulano@10.2.2.1 mengano@10.2.2.1
Configurar el router
En caso de que tu servidor se encuentre detrás de un router, es necesario configurar éste último para que no bloquee las conexiones entrantes. Más específicamente, hay que configurar.
Antes de ir al grano y mostrar la configuración necesaria me parece prudente explicar un poco en qué consiste el port-forwarding.
Supongamos que tenés una red local de 3 máquinas, todas ellas detrás de un router. ¿Cómo hace una conexión entrante (de SSH, como sería nuestro caso) para comunicarse con la máquina 1 de nuestra red local? No te olvides que "desde afuera" las 3 máquinas, si bien tienen IPs locales, comparten un único IP público a través del cual se conectan a Internet.
La solución al problema antes mencionado es el port-forwarding. De ese modo, cuando se reciban conexiones entrantes al puerto X de nuestro IP público, el router lo va a derivar a la máquina que corresponda. De ese modo siempre que nos conectemos mediante ese puerto, sabemos que el router nos va a redirigir (de ahí port-forwarding) a la máquina que corresponda. Todo esto, obviamente, hay que configurarlo en el router.
La configuración del port-forwarding varía un poco de acuerdo al router que estés utilizando. Lo más práctico es visitar www.portforward.com , elegir el modelo de router que estés utilizando y seguir los pasos que allí se describen.
Configurar el cliente Windows
Para conectarnos desde Windows resulta práctico utilizar como cliente SSH la herramienta PuTTY.
1.- El primer paso es Descargar PuTTY
Como se puede ver en la página de descargas de PuTTY, hay varias versiones disponibles. Recomiendo descargar la versión portable del programa: putty.exe. La ventaja de elegir la versión portable es que podés llevarla siempre con vos en un pendrive y ejecutar el programa desde cualquier computadora, estés donde estés.
2.- Abrí PuTTY y especificá el IP (público) y el puerto del servidor al que deberá conectarse el cliente SSH. ¿Cómo averiguar el IP público de tu servidor? Fácil, basta con googlear "cuál es mi ip pública" para encontrar miles de páginas que ofrecen este servicio.
3.- En caso de que el "cliente" se encuentre detrás de un proxy, no te olvides de configurarlo correctamente. En caso de que no sepas bien qué datos ingresar, abrí Internet Explorer e ingresá a Herramientas > Conexiones > Configuración de LAN > Avanzadas. Copiá y pegá los datos que aparecen ahí en PuTTY, como se ve en la imagen que aparece a continuación. En algunos casos, es posible que tengas que ingresar un nombre de usuario y contraseña.
4.- Falta introducir los datos del port-forwarding "local" para construir el tunel SSH. Accedé a Conection > SSH > Tunnels. Aquí la idea es la siguiente, tenemos que decirle a PuTTY qué conexiones tiene que "desviar" hacia nuestro servidor seguro. Para ello, debemos elegir un puerto.
Mi recomendación, especialmente si la máquina se encuentra detrás de un proxy es que elijas el puerto 443 ya que es el utilizado por SSL para realizar conexiones seguras, lo que dificultará al administrador la tarea de descubrir lo que estás haciendo. El puerto 8080, en cambio, es el utilizado por HTTP (que no es una conexión "segura" por lo que un administrador de red experimentado puede llegar a sospechar e incluso es posible que haya bloqueado el puerto para otro tipo de conexiones.
En Destination, volvé a ingresar el IP del servidor seguro, seguido de dos puntos y el puerto que hayas abierto el punto titulado "Configurar el router" y en el archivo ~/.ssh/config. Por ejemplo, 192.243.231.553:443.
Seleccioná Dynamic (lo que creará una conexión SOCKS, que utilizaremos en el punto siguiente) y hacé clic en Add.
5.- Volvé a la pantalla principal de PuTTY, hacé clic en Save y luego en Open. La primera vez que te conectes al servidor va a salir un mensaje de alerta como el que aparece a continuación:
6.- Luego, te pedirá el nombre de usuario y contraseña con acceso al servidor.
Si todo fue bien, una vez realizado el login, deberías ver algo como lo que se ve a continuación...
7.- Finalmente, sin cerrar PuTTY, abrí y configurá Firefox (o tu explorador favorito) para que se conecte a Internet a través de PuTTY.

