Lo que te refieres es "REENVÍO REMOTO SSH", y se explica correctamente en "man ssh ", con respecto a la "-R " opción.
> man ssh
[...]
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to
be forwarded to the given host and port on the local side.
This works by allocating a socket to listen to port on the remote
side, and whenever a connection is made to this port, the
connection is forwarded over the secure channel, and a connection is
made to host port hostport from the local machine.
[...]
En su contexto, donde:
- una caja Linux A (LINUX_BOX_A) dentro de una LAN detrás de un firewall.
- un servidor Linux B (SERVER_B) con una IP fija accesible desde Internet
El reenvío remoto SSH se puede usar para llegar a LINUX_BOX_A desde SERVER_B. La única condición es:LINUX_BOX_A DEBE ser capaz de conectarse a través de SSH a SERVER_B.
Para lograr este objetivo necesitas:
- en LINUX_BOX_A:
LINUX_BOX_A:~ $ ssh -R 2222:localhost:22 [email protected]_B
esto abrirá una conexión ssh de LINUX_BOX_A a SERVER_B que se usará para la conexión entrante remota.
Después de establecer la conexión ssh anterior, puede:
- en SERVIDOR_B:
SERVER_B:~ $ ssh -p 2222 [email protected]
dicha conexión ssh, iniciada en SERVER_B, se dirigirá al puerto 2222 que escucha en localhost que... está vinculado a la conexión ssh anterior. Así que esta será una "conexión ssh dentro de otra conexión ssh".
Algunas notas adicionales:
-
tenga en cuenta que si la primera conexión ssh se agota y/o se cae por cualquier motivo (incluido:eliminado por el cortafuegos local, debido a la inactividad), no podrá reenviar/conectar remotamente;
-
como es importante dejar activa la primera conexión ssh durante mucho tiempo, puede resultar útil iniciar dicho ssh dentro de una sesión de "pantalla"
Una nota final:obviamente, todo lo anterior tiene algunas implicaciones de seguridad (potencialmente graves) que están fuera del alcance de esta respuesta.