Tunnel con SSH
SSH non è soltanto un protocollo per stabilire sessioni remote sicure.
Esiste una tecnica, chiamata ssh tunneling che può rivelarsi molto utile.
A cosa serve
Immaginiamo questo scenario: ci sono due macchine (lan1 e lan2) all’interno di una rete locale, magari proprio la lan di casa vostra.
lan1 è dotato di server ssh ed è raggiungibile dall’esterno (supponiamo quindi che il router della rete locale abbia già definite le regole per il port forwarding).
lan2 al contrario non è raggiungibile dall’esterno (e probabilmente non ha nemmeno un server ssh attivo). Su di esso però è in esecuzione un servizio aperto alla rete locale (ad esempio un web server).
La sfida che ci si propone di risolvere è: data la macchina client situata al di fuori della rete lan, come ci si può connettere al servizio offerto da lan2?
Ssh tunneling
Grazie ad ssh è possibile stabilire una connessione tra client e lan1, e veicolare all’interno di questa connessione (ecco il motivo del nome “tunnel”) un qualsiasi traffico TCP.
Per stabilire il tunnel si utilizza su client1 un comando del genere:
ssh <ip pubblico lan> -L <porta locale>:<ip privato lan2>:<porta lan2>
Una volta autenticati su lan1, tutte le connessioni che si faranno da client1 verso localhost:<porta locale> verranno instradate tramite ssh a lan1 e infine alla porta su lan2.
lan1 diventa quindi il nostro ponte (o meglio, tunnel) verso lan2.
Fintanto che la sessione ssh rimarrà attiva si potrà usufruire del tunnel.
E’ bene notare un piacevole effetto collaterale dovuto all’uso di ssh: i dati, fino a lan1, viaggiano in modo sicuro grazie agli algoritmi di cifratura di ssh.


