Para acceder a una página web que no está di­s­po­ni­ble desde tu red, los SSH tunnels ofrecen una buena solución: en lugar de navegar hasta la página web di­re­c­ta­me­n­te desde tu propia conexión de red, puedes tomar el túnel SSH (también de­no­mi­na­do reenvío de puertos SSH) para ir a través de un servidor SSH.

Se­r­vi­do­res virtuales (VPS)
VPS rentables en se­r­vi­do­res Dell En­te­r­pri­se
  • 1 Gb/s de ancho de banda y tráfico ilimitado
  • 99,99 % de tiempo de actividad y ce­r­ti­fi­ca­ción ISO
  • Soporte 24/7 ga­la­r­do­na­do y asesor personal

¿Qué es un SSH tunnel?

Los túneles SSH, al igual que los túneles reales, sirven para conectar dos puntos. El primero de estos puntos es un ordenador que suele estar conectado a una red no segura. El punto de destino es un servidor o una dirección web a la que no puedes o no quieres acceder desde tu red. Los túneles SSH funcionan, por lo tanto, como enlaces entre di­fe­re­n­tes se­r­vi­do­res y conectan los puertos TCP de dos or­de­na­do­res entre sí para cumplir su función. Cabe señalar que cualquier puerto TCP puede ser reenviado mediante un túnel SSH, por lo que el proceso también se denomina reenvío de puertos SSH o reenvío SSH.

Con respecto al servidor SSH, puedes utilizar prá­c­ti­ca­me­n­te cualquier servidor para esto. Un ejemplo sería el servidor Raspberry Pi SSH.

Consejo

¿Todavía no has podido encontrar un servidor adecuado? ¡No hay problema! Echa un vistazo a los se­r­vi­do­res cloud de IONOS y se­le­c­cio­na el servidor que mejor se adapta a tus ne­ce­si­da­des.

¿Pero qué tra­n­s­po­r­ta exac­ta­me­n­te un SSH tunnel? El túnel SSH permite que ciertos pro­to­co­los TCP puedan uti­li­zar­se de forma segura. También el SMTP o protocolo para el envío de correos ele­c­tró­ni­cos utiliza el SSH tunneling para la tra­n­s­fe­re­n­cia de datos. SSH garantiza la seguridad de los datos que se tra­n­s­po­r­tan en el túnel.

¿Para qué se utilizan los túneles SSH?

Hay varios casos de uso para el reenvío de puertos secure shell. En la mayoría de los casos, el reenvío de puertos SSH se utiliza para crear una conexión cifrada entre un ordenador local (el host local) y un ordenador remoto. El uso de esta red virtual permite eludir ciertas re­s­tri­c­cio­nes de acceso. Parecerá que estás en esta red, cuando en realidad sólo estás ac­ce­die­n­do a ella mediante el SSH tunnel. Esto es similar a una red privada virtual (VPN), pero no obstante es diferente: intenta no confundir las dos cosas.

Si tra­n­s­po­r­tas datos desde servicios que utilizan un protocolo no cifrado, puedes utilizar el reenvío SSH para cifrar la tra­n­s­fe­re­n­cia de datos. Para ello se utilizará un Protocolo de Tra­n­s­fe­re­n­cia de Archivos SSH, SFTP. Los túneles SSH también ofrecen mayor seguridad cuando navegas por redes de acceso público como, por ejemplo, la de un hotel o una cafetería. Las claves SSH utilizan un cifrado asi­mé­tri­co y pro­po­r­cio­nan un nivel de seguridad aún mayor.

Es im­po­r­ta­n­te que tengas en cuenta que los hackers utilizan con fre­cue­n­cia los túneles SSH. Ellos co­n­s­tru­yen puertas traseras en las redes internas para que los atacantes puedan acceder fá­ci­l­me­n­te a los datos internos.

Consejo

¿Quieres apro­ve­char las ventajas del SSH para tu página web? El pack de alo­ja­mie­n­to web de IONOS incluye un ce­r­ti­fi­ca­do SSL y te pro­po­r­cio­na todo lo que necesitas. O si sólo quieres mejorar tu página web con SSL, echa un vistazo a los ce­r­ti­fi­ca­dos SSL que ofrece IONOS. Y si decides aumentar la seguridad de tu web, por ejemplo con la au­te­n­ti­ca­ción de dos factores, consulta IONOS Domain Guard.

Uso de túneles SSH en Linux

Hay varias opciones para co­n­fi­gu­rar un túnel SSH.

Reenvío de puertos locales SSH

El método más habitual para co­n­fi­gu­rar un túnel SSH es el reenvío local de puertos. Esto implica acceder a los recursos de la red local desde tu ordenador local y reenviar un puerto de tu ordenador a un puerto del servidor SSH. A co­n­ti­nua­ción, el puerto puede ser reenviado a un puerto del ordenador de destino.

Para co­n­fi­gu­rar el reenvío local de puertos, utiliza el siguiente comando de terminal en los sistemas ope­ra­ti­vos basados en Unix o en macOS:

ssh -L local_port: remote_address: remote_port username@server.com

Primero tendrás que definir qué puerto quieres reenviar (local_port). Puedes utilizar cualquier número de puerto superior a 1024. Esto se debe a que los puertos con números in­fe­rio­res están re­s­tri­n­gi­dos y sólo el root puede acceder a ellos. A co­n­ti­nua­ción, introduce la dirección IP del servidor de destino (remote_address) y tus cre­de­n­cia­les (remote_port).

Apli­que­mos esto a un ejemplo: su­po­n­ga­mos que quieres co­ne­c­tar­te con un servidor de tu oficina cuya dirección de red es 123.234.1.111. Puedes acceder al servidor SSH de tu oficina mediante ssh.test.com. Tu nombre de usuario es “Testuser”. El comando que uti­li­za­rías para co­n­fi­gu­rar el túnel SSH para el puerto 1234 sería el siguiente:

ssh -L 8888: 123.234.1.111: 1234 Testuser@ssh.test.com

Tras ejecutar el comando, tendrás acceso al servidor de la oficina a través del puerto 8888. Si el servidor permite el acceso web, también podrás acceder al servidor de la oficina a través de http://localhost:8888. Los datos que envíes al puerto 8888 de tu ordenador se re­en­via­rán al puerto 1234 del ordenador de destino mediante el túnel SSH.

Reenvío de puertos remotos SSH

El reenvío de puertos remotos conecta un puerto del servidor SSH a un puerto del ordenador cliente, que puede es­ta­ble­cer una conexión con el ordenador de destino. Este tipo de reenvío de puertos suele uti­li­zar­se para pro­po­r­cio­nar a una persona externa acceso a servicios internos. El comando de terminal para co­n­fi­gu­rar un túnel SSH remoto tiene el siguiente aspecto:

ssh -R remote_port: target_address: target_port user@ssh_server_address

Si ahora quieres, por ejemplo, in­te­r­ce­p­tar un puerto con número de puerto 8080 y enviar los datos al puerto número 3000 de tu ordenador local, el comando tendría el siguiente aspecto:

ssh -R 8080: 127.0.0.1:3000 user@remote.host

En el ejemplo anterior, el servidor SSH tiene la dirección remote.host. Ahora puedes acceder ex­te­r­na­me­n­te a los datos que estás “tu­ne­li­za­n­do” si in­tro­du­ces esta dirección junto con el número de puerto en un navegador:

remote.host:8080

Si tienes problemas para co­n­fi­gu­rar el reenvío remoto de puertos, puede deberse a la co­n­fi­gu­ra­ción de tu servidor SSH. El reenvío remoto de puertos suele estar des­ac­ti­va­do por defecto. Solo tienes que activar el Ga­te­wa­y­Po­rts en el archivo de co­n­fi­gu­ra­ción de tu servidor SSH. Para ello, abre el archivo y pon Ga­te­wa­y­Po­rts en “yes”.

Reenvío dinámico de puertos SSH

Una tercera manera de utilizar los túneles SSH consiste en el reenvío dinámico de puertos. Esta manera te permite utilizar un socket en tu ordenador local que fu­n­cio­na­rá como una especie de proxy SOCKS. Todas las apli­ca­cio­nes que utilicen un proxy SOCKS se co­ne­c­ta­rán entonces con el servidor SSH y enviarán su tráfico a través del túnel. Este tipo de reenvío de puertos se utiliza a menudo para tunelizar el tráfico del navegador web.

Para co­n­fi­gu­rar el reenvío dinámico de puertos, utiliza el siguiente comando de terminal:

ssh -D [local_ip_address:]local_port user@ssh_server_address

Si no in­tro­du­ces una dirección IP local, se utilizará au­to­má­ti­ca­me­n­te la dirección IP 127.0.0.1 (localhost. Si, por ejemplo, co­n­fi­gu­ras un túnel SOCKS para el puerto 9090 con la dirección remote.host, el comando tendrá el siguiente aspecto:

ssh -D 9090 -N -f user@remote.host

Después de co­n­fi­gu­rar el proxy SOCKS, asegúrate de co­n­fi­gu­rar co­rre­c­ta­me­n­te las apli­ca­cio­nes que utilizan el proxy.

SSH tunnels y Windows

También puedes co­n­fi­gu­rar túneles SSH en Windows. Como el terminal es menos im­po­r­ta­n­te en Windows, querrás utilizar una de las muchas he­rra­mie­n­tas prácticas con interfaz de usuario, como PuTTY. Hacen que co­n­fi­gu­rar un túnel SSH sea muy fácil.

Cuando hayas de­s­ca­r­ga­do e instalado PuTTY, ábrelo. En el menú de inicio, introduce la dirección IP del servidor SSH deseado en “Hostname”. A co­n­ti­nua­ción, accede a “Co­n­ne­c­tion/SSH/Tunnels”. Aquí puedes in­tro­du­cir el puerto de origen y el de destino en los cuadros “Source Port” y “De­s­ti­na­tion”. para es­ta­ble­cer la conexión. Ahora deberías poder es­ta­ble­cer una conexión y acceder al puerto en el navegador con 127.0.0.1:port_number.

Túneles SSH inversos

Para acceder a or­de­na­do­res con una dirección IP privada ne­ce­si­ta­rás un túnel SSH inverso. Con un túnel SSH inverso, el ordenador remoto al que quieres acceder puede crear una conexión con tu ordenador local. Luego puedes utilizar esa conexión para crear una nueva conexión desde el ordenador local al ordenador remoto.

El siguiente comando co­n­fi­gu­ra­rá un SSH tunnel desde el ordenador remoto:

ssh -Nf -R 2222:localhost:22 user@local.computer

El ordenador local puede entonces utilizar el siguiente comando para co­ne­c­tar­se con el ordenador remoto:

ssh localhost -p 2222
Ir al menú principal