¿Qué es un túnel SSH inverso? (Y cómo usarlo)
¿Necesita SSH en una computadora Linux inaccesible?Haga que lo llame, luego toque esa conexión para obtener su propia sesión SSH remota. Te contamos cómo.
Cuándo usar túneles SSH inversos
A veces puede ser difícil acceder a las computadoras remotas. Pueden estar en un sitio con reglas de firewall estrictas, o un administrador local puede haber configurado complejos Interpretación de direcciones de Internet regla. Si necesita conectarse a una computadora de este tipo, ¿cómo llega a ella?
Vamos a crear algunas etiquetas. Su computadora es local porque está cerca de usted. La computadora a la que se está conectando es remota porque se encuentra en una ubicación diferente a la suya.
Para distinguir entre la computadora local y la computadora remota utilizada en este artículo, la computadora remota se llama «howtogeek» y ejecuta Ubuntu Linux (con una ventana de terminal morada). La computadora local se llama «Sulaco» y ejecuta Manjaro Linux (con una terminal amarilla en Windows).
por lo general disparas Conexión SSH Conéctese desde una computadora local a una computadora remota. En el escenario de red que describimos, esta no es una opción. No importa cuál sea el problema exacto de la red: es útil cuando no puede usar SSH directamente en la máquina remota.
Sin embargo, si la configuración de red de su lado es simple, las computadoras remotas pueden conectarse con usted. Sin embargo, esto por sí solo no será suficiente para sus necesidades, ya que no le brindará una sesión de línea de comandos que funcione en la computadora remota. Pero es un comienzo. Ha establecido una conexión entre dos ordenadores.
La respuesta está en el túnel SSH inverso.
¿Qué es un túnel SSH inverso?
El túnel SSH inverso le permite usar una conexión establecida para establecer una nueva conexión desde su computadora local a una computadora remota.
Debido a que la conexión original es de la computadora remota a usted, usarla en la otra dirección es «inversa» al usarla. Y debido a que SSH es seguro, coloca 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.
De ahí el nombre «Tunelización SSH inversa».
¿Como funciona?
El túnel SSH inverso se basa en que la computadora remota usa una conexión establecida para escuchar nuevas solicitudes de conexión de la computadora local.
La computadora remota escucha en un puerto de red en la computadora local. Si detecta una solicitud SSH a ese puerto, se retransmite la solicitud de conexión a sí mismo, junto con la conexión establecida. Esto proporciona una nueva conexión desde la computadora local a la computadora remota.
La configuración es más fácil que la descripción.
Utilice túneles inversos SSH
SSH ya está instalado en su computadora Linux, pero es posible que deba iniciar el demonio SSH (sshd) si su computadora local nunca antes ha aceptado una conexión SSH.
sudo systemctl iniciar sshd
Para iniciar el demonio SSH cada vez que se reinicia la computadora, use el siguiente comando:
sudo systemctl habilitar sshd
En la computadora remota, usamos el siguiente comando.
- (
-R
inversa) la opción dicessh
Se debe crear una nueva sesión SSH en la computadora remota. - «43022: localhost: 22» dice
ssh
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 es listado como no asignado. Este no es un número especial. - dave@sulaco.local es la cuenta de usuario en la computadora local a la que se conectará la computadora remota.
ssh -R 43022:localhost:22 dave@sulaco.local
Es posible que reciba una advertencia de que nunca antes se ha conectado a su computadora local. Como alternativa, es posible que vea una advertencia cuando se agreguen detalles de conexión a la lista de hosts SSH reconocidos. Lo que vea, si lo ve, depende de si alguna vez se ha realizado una conexión desde la computadora remota a la computadora local.
Se le pedirá la contraseña de la cuenta utilizada para conectarse a la computadora local.
Tenga en cuenta que después de establecer la conexión, el símbolo del sistema cambiará de dave@howtogeek a dave@sulaco.
Ahora estamos conectados desde la computadora remota a la computadora local. Esto significa que podemos enviarle comandos.usemos elwho
Comando para ver la información de inicio de sesión en la computadora local.
Quién
Podemos ver que alguien con una cuenta de usuario llamada dave está conectado a la computadora local y una computadora remota está conectada desde la dirección IP 192.168.4.25 (usando las mismas credenciales de usuario).
conectarse a la computadora remota
Dado que la conexión desde la computadora remota fue exitosa y está escuchando conexiones, podemos intentar conectarnos a la computadora remota desde la computadora local.
La computadora remota está escuchando en el puerto 43022 en la computadora local. Entonces, de manera un tanto contraria a la intuición, para conectarse a una computadora remota, le preguntamosssh
Conéctese a su computadora local en el puerto 43022. La solicitud de conexión se reenvía a la computadora remota.
ssh servidor local -p 43022
Se nos solicitó la contraseña de la cuenta de usuario y luego nos conectamos a la computadora remota desde la computadora local. Nuestra computadora Manjaro felizmente dijo: «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 establecer conexiones SSH a equipos remotos de difícil acceso.
Usar SSH con claves
Para conectarnos desde una computadora remota a una computadora local de manera más conveniente, podemos configurar una clave SSH.
En la computadora remota, escriba el siguiente comando:
ssh-keygen
Se le pedirá su contraseña. Puede presionar Entrar para ignorar la pregunta de la contraseña, pero esto no se recomienda. Esto significa que cualquier persona en la computadora remota puede conectarse mediante SSH a su computadora local sin ingresar una contraseña.
Tres o cuatro palabras separadas por símbolos formarán una contraseña segura.
Se generarán sus claves SSH.
Necesitamos transferir la clave pública a la computadora local. Usa este comando:
ssh-copia-id dave@sulaco.local
Se le solicitará la contraseña de la cuenta de usuario en la que desea iniciar sesión, en este caso dave@sulaco.local.
Debe proporcionar una contraseña la primera vez que realice una solicitud de conexión desde una computadora remota a su computadora local. Mientras la ventana del terminal permanezca abierta, las futuras solicitudes de conexión no tendrán que volver a introducir la contraseña.
No todos los túneles dan miedo
Algunos túneles pueden ser oscuros y tortuosos, pero los túneles SSH inversos no son difíciles de navegar si puede recordar directamente la relación entre la computadora remota y la computadora local. Luego inviértalo. Para facilitar las cosas, siempre puede configurar un archivo de configuración SSH que le permita simplificar cosas como la tunelización o el reenvío del agente ssh.