Este es el comando para la computadora naranja :
ssh -N -R:<chosen-port>:10.0.0.101:<web-app-port> -p <blue-ssh-port> <blue-user>@<blue-public-ip>
(Cómo hacer que sobreviva a su cierre de sesión desde la naranja : es un problema separado. Vea esto ; o tmux
/ screen
, disown
o nohup
con un script personalizado).
El comando anterior hace que el servidor SSH en el azul escuche en el (TCP) <chosen-port>
de su elección en la interfaz de bucle invertido. Las conexiones entrantes se tunelizarán a la naranja y se enviarán a 10.0.0.101:<web-app-port>
(es decir, la roja ) desde allí. Esto crea un túnel sin ejecutar un comando ni shell en el azul (gracias a la -N
opción).
Hay una manera de hacer que el azul escuche en la otra interfaz (sin bucle invertido), pero no se recomienda por seguridad; Esta opción puede ser incluso deshabilitado en azul (se explica en man ssh
, -R
opción).
Para llegar a la interfaz azul de bucle invertido desde su máquina doméstica verde , use otro túnel. En verde :
ssh -N -L:<chosen-port-2>:127.0.0.1:<chosen-port> -p <blue-ssh-port> <blue-user>@<blue-public-ip>
Ahora deberías poder alcanzar el rojo desde el verde usando la dirección:
127.0.0.1:<chosen-port-2>
<chosen-port>
y <chosen-port-2>
puede o no ser el mismo número, realmente no importa. Lo que importa es que debe elegir puertos altos (de 1024 a 65535).
La diferencia entre -L
y -R
túneles:
-L
escucha en el lado local, es decir, donde invoca ssh
;
-R
escucha en el lado remoto, es decir, donde usted ssh
.
Sabiendo esto, deberías poder rastrear lo que acabamos de hacer. Tenga en cuenta que creamos los túneles moviéndose hacia el verde porque (para mí) parecía más lógico trabajar de esta manera. Su conexión irá desde el verde, así que rastreemos la ruta completa en esta dirección. Es como sigue:
- El cliente SSH en el verde escucha
127.0.0.1:<chosen-port-2>
debido al segundo túnel.
- Reenvía los paquetes al servidor SSH en el azul que los envía
127.0.0.1:<chosen-port>
allí. Desde la perspectiva azul , estos son paquetes locales generados por el servidor SSH.
- El mismo servidor SSH escucha en ese puerto debido al primer túnel. El servidor toma los paquetes y los reenvía a la naranja .
- El cliente SSH en el naranja envía los paquetes al rojo . Desde la perspectiva roja , los paquetes son del naranja , no sabe nada sobre el azul ni el verde .