¿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.
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 quizás 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 utilizan 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.
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 como 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».
El túnel SSH inverso se basa en que la computadora remota utilice 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.
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.
-R
opción (inversa) indica ssh
que se deben crear nuevas sesiones SSH en la computadora remota.ssh
que las solicitudes de conexión al puerto 43022 en la computadora local deben reenviarse al puerto 22 en la computadora remota. Se eligió el puerto 43022 porque está listado como no asignado . No es un número especial.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, en todo caso, 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 who
comando para ver los inicios de sesión en la computadora local.
OMS
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.
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 a la computadora remota, pedimos ssh
hacer una conexión a la computadora local, en el puerto 43022. Esa solicitud de conexión se reenviará 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».
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.
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 formará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.
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.
El mundo del gaming ha experimentado un crecimiento exponencial en los últimos años. La…
Stokkete/Shutterstock.com ¿Sigue utilizando una unidad flash USB obsoleta para almacenar sus archivos? ¿Por qué no…
LG Los fabricantes siempre intentan mejorar el rendimiento de imagen de los monitores. Como resultado,…
Patty Chan/Shutterstock.com Si cree en lo que ve en las redes sociales, puede pensar en…
Seksan.TH/Shutterstock.com Los servicios de suscripción como Netflix, Game Pass y Spotify nos permiten consumir tantas…
fatmawati achmad zaenuri/Shutterstock El acceso a Internet, oa cualquier otra red, se rige por la…