Nella seguente guida vedremo come utilizzare il protocollo ssh per costruire dei tunnel di rete per fare ponte su un server.
Spesso negli ambienti in cui lavoriamo non abbiamo la connettività diretta verso un server di destinazione, ma dobbiamo obbligatoriamente fare ponte su un'altra macchina per raggiungere un servizio o una console.

Con questo sistema abbiamo la possibilità di stabilire un ponte tra un server e un altro evitando di loggarci su più macchine per raggiungere la destinazione desiderata.

Esempio:

ssh -L portalocale:remotesite.com:portaremota utente@serversshremoto.com

In questo esempio tutti i dati mandati alla portalocale del pc/server dal quale si lancia il comando ssh saranno inviati al server di destinazione tramite il tunnel stabilito con il server ssh remoto

Man page ssh
-L
porta:host:portahost

Indica che la porta sull'host locale (il client) viene messa in comunicazione con host e porta
relativi al sistema remoto.
Ciò viene effettuato allocando un socket che ascolta sulla porta del sistema locale; qualora venisse
usata questa porta per effettuare la connessione,
Quest'ultima verrebbe inoltrata attraverso il canale sicuro, così da connettere l'host locale con l'host
remoto attraverso la sua porta portahost.


Man page ssh
-R
porta:host:portahost

Indica che una certa porta dell'host remoto (il server) viene messa in comunicazione con host e porta
questa verrebbe inoltrata attraverso il canale sicuro, così da connettere l' host remoto con
quello locale attraverso la sua porta portahost. La porta per la connessione può essere indicata
anche in un file di configurazione.


man page ssh
-D
porta

Indica una porta locale ``dinamica'' a livello di applicazione da usare per la comunicazione.
Ciò viene effettuato allocando un socket che ascolta sulla porta del sistema locale; qualora
questa porta venisse usata per effettuare la connessione, questa verrebbe inoltrata attraverso il
canale sicuro e il protocollo dell'applicazione viene usato per determinare dove va effettuata la
connessione dalla macchina remota.
Attualmente è supportato il protocollo SOCKS4 e ssh funzionerà come server SOCKS4.
Port forwarding con sistemi Windows

Possiamo utilizzare Putty ( http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html ) per creare tunnel criptati con SSH

Supponiamo ad esempio di voler collegarci in maniera sicura al server proxy test.com sulla porta 3128

Creiamo una nuova sessione ssh verso questo server Quindi, selezioniamo il tab “Tunnels” e specifichiamo la porta locale, quella remota e l'host remoto e poi clickiamo il tasto [Add]:
Infine, col tasto [Open] iniziamo la sessione.

Possiamo anche salvare questi settaggi tornando al tab “Session” e usando [Save] prima di aprire la
sessione.

Questo esempio è l'equivalente del comando UNIX:

ssh –L 3128:proxy:3128 your_username_here@test.com

In pratica forwarda la porta locale 3128 verso la porta 3128 dell'host 'proxy' attraverso la
connessione SSH.

Putty è un client SSH, quindi aprirà una finestra di terminale.
Quando concluderete la sessione potete chiudere la finestra senza problema alcuno.