![]() |
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 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.
una pregunta en el paso 6 cual usurio y cual contaseña debo poner
excelente, probare configurarlo con el de mi casa
para acceder a internet desde mi casa:
conexion de acceso telefonico por modem 56k,
ejecuto un fichero .bat que tiene esta configuracion:
@Echo Off
C:
Cd C:\Windows
putty -N -C -D 1080 -P 443 -ssh user@00.00.000.000 -pw pass
Exit
y que esta relacionado con el putty el cual esta configurado de esta
forma: en options controlling proxy usage lo pongo en http, en proxy
hostname pongo mi proxy y el puerto 3128 y en username and password
pongo mi datos dejando todo lo demas sin tocar y salvando esta
configuracion una priemra vez como default settings
y para poder usar mozilla, yahoo messenger, etc, tengo que proxificar
las aplicaciones con el proxifier version 3 configurado de esta forma:
en proxy server con la direccion 127.0.0.1 puerto 1080 sock version 5,
en proxification rules agrego la aplicacion putty y en actions le pongo
direct, para que todos los programas salgan a traves de este.
necesito saber como puedo lograrlo en mi telefono con android que
conecto a mi pc a traves del connectify y este comparte mi conecxion de
acceso telefonico. necesito tutorial y apks que me resuelvan este
dilema. saludos y gracias de antemano
Faltó explicar cómo el servidor SSH va mágicamente a atender los pedidos HTTP que el cliente haga…flojito el tutorial…
Equivocado Clint Eastwood.
Con lo explicado en el tutorial, «mágicamente», funciona!.
Para nada flojito, mas bien diría justo y concreto.
Muy bien explicado para los no experimentados.
Saludos
Qué bueno que te haya servido! Un abrazo! Pablo.
Funciona muy bien.
Como continuación, túnel SSH con WinSCP:
http://www.sysadmit.com/2014/05/linux-tuneles-ssh-con-winscp.html
genial muy bien explicado 5* gracias
Una pregunta…
¿Y si lo que quiero es un tunel entre dos maquinas con linux?. Tengo la siguiente situación: En mi trabajo estamos trasteando con un pc, queremos probar un software de video conferencia, por lo que debimos instalar un servidor en pc avandonado. El problema es que al instalar el software (bigbluebutton) la instalación falla… descubrimos que el problema está en que se está bloqueando la descarga de un componente de la instalación (a todo esto no soy informático, soy profesor en constante aprendizaje)…
Como la Empresa es grande las posibilidades de que nos ayuden desde redes es menos que nula…
Entonces, estaba pensando en conectar el servidor (ubuntu server) por medio de un tunel ssh con el pc de mi casa (que tiene ubuntu) y luego instalar el software…
¿Es posible? ¿Me ayudan?
Hola buen, tengo una consulta, quiero conectarme a una aplicacion que tengo en mi servidor Debian que esta en un maquina virtual, la cual la tengo montada en Windows y quiero acceder desde otra red a esa aplicacion, allguien me guia por favor.
Cómo Instalar y Configurar un Servidor SSH
https://www.youtube.com/watch?v=iY536vDtNdQ
Hola buenas, tengo una cuestión que me está fastidiando bastante y he decidido pasar a consultar a la comunidad.. pues aquí estoy, a ver si me podéis ayudar.. Soy «nuevo» en el mundo de la virtualización, linux.
El caso es el siguiente he instalado una máquina virtual con linux server 14.04.5 LTS, he configurado la red en Vbox como «adaptador puente» seleccionando mi adaptador de red. Una vez dentro de mi servidor, he instalado varias cosillas, es decir, tengo acceso a internet.. entre esas cosillas he instalado el servicio SSH, dejando por defecto el puerto 22 y el servicio ftp «vsftpd».
Al consultar el comando «ifconfig» me responde:
Link encap:Ethernet direcciónHW 08:00:27:d5:2c:88
Direc. inet:192.168.0.13 Difus.:192.168.0.255 Másc:255.255.255.0
……
Ahora, para conectarme desde mi ordenador ( Windows 10 ) con Putty a mi servidor virtual mediante ssh ( puerto 22 ) utilizo la ip «192.168.0.13» , y lo mismo con el FTP, pero si quiero que un amigo desde su casa se conecte a mi servidor ya sea mediante SSH o FTP se nos hace imposible utilizando la ip que yo utilizo en mi ordenador.
Me gustaría saber a que se debe esto, pues la ip «192.168.0.13» creo que funciona a nivel local, es decir, ¿Debo configurar algo más, modificar /etc/network/interfaces, modificar algo en iptables?
Pues quiero que mi servidor trabaje como una ip pública a la que cualquiera se pueda conectar teniendo los accesos..
Gracias de antemano!