Quello a cui ti riferisci è "SSH REMOTE FORWARDING", ed è correttamente spiegato in "man ssh ", per quanto riguarda il "-R " opzione.
> 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.
[...]
Nel tuo contesto, dove:
- una Linux box A (LINUX_BOX_A) all'interno di una LAN dietro un firewall.
- un server Linux B (SERVER_B) con un IP fisso accessibile da Internet
L'inoltro remoto SSH può essere utilizzato per raggiungere LINUX_BOX_A dal SERVER_B. L'unica condizione è:LINUX_BOX_A DEVE essere in grado di connettersi tramite SSH al SERVER_B.
Per raggiungere questo obiettivo è necessario:
- su LINUX_BOX_A:
LINUX_BOX_A:~ $ ssh -R 2222:localhost:22 [email protected]_B
questo aprirà una connessione ssh da LINUX_BOX_A al SERVER_B che verrà utilizzata per la connessione remota, in entrata.
Dopo aver stabilito la connessione ssh sopra, puoi:
- sul SERVER_B:
SERVER_B:~ $ ssh -p 2222 [email protected]
tale connessione ssh, lanciata su SERVER_B, sarà indirizzata alla porta 2222 in ascolto su localhost che... è legata alla precedente connessione ssh. Quindi questa sarà una "connessione ssh all'interno di un'altra connessione ssh".
Alcune note aggiuntive:
-
considera che se la prima connessione ssh andrà in timeout e/o fallirà per qualsiasi motivo (incluso:ucciso dal firewall locale, a causa di inattività), non sarai in grado di inoltrare in remoto/connessione_remota;
-
poiché è importante lasciare attiva la prima connessione ssh per molto tempo, potrebbe essere utile avviare tale ssh all'interno di una sessione "screen"
Un'ultima nota:ovviamente, tutto quanto sopra ha alcune (potenzialmente gravi) implicazioni sulla sicurezza che esulano dall'ambito di questa risposta.