Header Ads Widget

Ticker

6/recent/ticker-posts

¿Qué es el túnel SSH inverso? (Y cómo usarlo)

 

Mensaje de SSH en una computadora portátil

¿Necesita SSH a una computadora Linux inalcanzable? Haga que lo llame, luego busque esa conexión para obtener su propia sesión SSH remota. Te mostramos cómo.

Cuándo querrá utilizar el túnel SSH inverso

A veces, las computadoras remotas pueden ser difíciles de alcanzar. El sitio en el que se encuentran puede tener estrictas reglas de firewall, o tal vez el administrador local haya configurado complejas reglas de traducción de direcciones de red¿Cómo llega a una computadora así si necesita conectarse a ella?

Establezcamos algunas etiquetas. Su computadora es la computadora local porque está cerca de usted. La computadora a la que se va a conectar es la computadora remota porque está en una ubicación diferente a la suya.

Para diferenciar entre las computadoras locales y remotas que se usan en este artículo, la computadora remota se llama "howtogeek" y está ejecutando Ubuntu Linux (con ventanas terminales de color púrpura). La computadora local se llama "Sulaco" y está ejecutando Manjaro Linux (con ventanas de terminal amarillas).

Normalmente, iniciaría una conexión SSH desde la computadora local y se conectaría a la computadora remota. Esa no es una opción en el escenario de redes que estamos describiendo. Realmente no importa cuál sea el problema específico de la red; esto es útil siempre que no pueda SSH directamente a una computadora remota.

Pero si la configuración de red en su extremo es sencilla, la computadora remota puede conectarse a usted. Sin embargo, eso por sí solo no es suficiente para sus necesidades, porque no le proporciona una sesión de línea de comandos que funcione en la computadora remota. Pero es un comienzo. Tiene una conexión establecida entre las dos computadoras.

La respuesta está en el túnel SSH inverso.

¿Qué es el túnel SSH inverso?

El túnel SSH inverso le permite usar esa conexión establecida para configurar una nueva conexión desde su computadora local a la computadora remota.

Debido a que la conexión original vino de la computadora remota a usted, usarla para ir en la otra dirección es usarla "al revés". Y debido a que SSH es seguro, está colocando una conexión segura dentro de una conexión segura existente. Esto significa que su conexión a la computadora remota actúa como un túnel privado dentro de la conexión original.

Y así llegamos al nombre "túnel SSH inverso".

¿Como funciona?

El túnel SSH inverso se basa en la computadora remota que usa la conexión establecida para escuchar nuevas solicitudes de conexión desde la computadora local.

La computadora remota escucha en un puerto de red en la computadora local. Si detecta una solicitud SSH a ese puerto, transmite esa solicitud de conexión a sí mismo, a través de la conexión establecida. Esto proporciona una nueva conexión desde la computadora local a la computadora remota.

Es más fácil de configurar que de describir.

Uso de túnel inverso SSH

SSH ya estará instalado en su computadora Linux, pero es posible que deba iniciar el demonio SSH (sshd) si la computadora local nunca antes ha aceptado conexiones SSH.

sudo systemctl start sshd

Para que el demonio SSH se inicie cada vez que reinicie su computadora, use este comando:

sudo systemctl habilitar sshd

En la computadora remota, usamos el siguiente comando.

  • La -Ropción (inversa) indica sshque se deben crear nuevas sesiones SSH en la computadora remota.
  • El "43022: localhost: 22" indica  sshque las solicitudes de conexión al puerto 43022 en la computadora local deben ser reenviadas al puerto 22 en la computadora remota. Se eligió el puerto 43022 porque está listado como no asignadoNo es un número especial.
  • dave@sulaco.local es la cuenta de usuario a la que se conectará la computadora remota en la computadora local.
ssh -R 43022: localhost: 22 dave@sulaco.local

Es posible que reciba una advertencia acerca de que nunca antes se había conectado a la computadora local. O puede ver una advertencia cuando los detalles de la conexión se agregan a la lista de hosts SSH reconocidos. Lo que ve, si es que ve algo, depende de si alguna vez se han realizado conexiones desde la computadora remota a la computadora local.

Se le pedirá la contraseña de la cuenta que está utilizando para conectarse a la computadora local.

Tenga en cuenta que cuando se ha realizado la conexión, el símbolo del sistema cambia de dave @ howtogeek a dave @ sulaco.

Ahora estamos conectados a la computadora local desde la computadora remota. Eso significa que podemos enviarle comandos. Usemos el whocomando para ver los inicios de sesión en la computadora local.

quién

Podemos ver que la persona con la cuenta de usuario llamada dave ha iniciado sesión en la computadora local y la computadora remota se ha conectado (usando las mismas credenciales de usuario) desde la dirección IP 192.168.4.25.

Conexión a la computadora remota

Debido a que la conexión desde la computadora remota es exitosa y está escuchando conexiones, podemos intentar conectarnos a la computadora remota desde la local.

La computadora remota está escuchando en el puerto 43022 en la computadora local. Entonces, de manera algo contraria a la intuición, para hacer una conexión con la computadora remota, le pedimos sshque haga una conexión con la computadora local, en el puerto 43022. Esa solicitud de conexión se enviará a la computadora remota.

ssh localhost -p 43022

Se nos solicita la contraseña de la cuenta de usuario y luego nos conectamos a la computadora remota desde la computadora local. Nuestra computadora Manjaro dice felizmente, "Bienvenido a Ubuntu 18.04.2 LTS".

conexión inversa del túnel ssh a la computadora remota

Tenga en cuenta que el símbolo del sistema ha cambiado de dave @ sulaco a dave @ howtogeek. Hemos logrado nuestro objetivo de hacer una conexión SSH a nuestra computadora remota de difícil acceso.

Usar SSH con claves

Para que sea más conveniente conectarse desde la computadora remota a la computadora local, podemos configurar claves SSH.

En la computadora remota, escriba este comando:

ssh-keygen

Se le pedirá una frase de contraseña. Puede presionar Enter para ignorar las preguntas de la frase de contraseña, pero esto no se recomienda. Significaría que cualquier persona en la computadora remota podría hacer una conexión SSH a su computadora local sin que se le solicite una contraseña.

Tres o cuatro palabras separadas por símbolos harán una frase de contraseña sólida.

Se generarán sus claves SSH.

Necesitamos transferir la clave pública a la computadora local. Utilice este comando:

ssh-copy-id dave@sulaco.local

Se le pedirá la contraseña de la cuenta de usuario en la que está iniciando sesión, en este caso, dave@sulaco.local.

La primera vez que realice una solicitud de conexión desde la computadora remota a la computadora local, deberá proporcionar la frase de contraseña. No tendrá que ingresarlo nuevamente para futuras solicitudes de conexión, mientras esa ventana de terminal permanezca abierta.

cuadro de diálogo de solicitud de frase de contraseña

No todos los túneles dan miedo

Algunos túneles pueden ser oscuros y sinuosos, pero el túnel SSH inverso no es demasiado difícil de navegar si puede mantener la relación entre la computadora remota y la computadora local directamente en su cabeza. Luego inviértalo.

Publicar un comentario

0 Comentarios