Il port forwarding o tunnelling e' un modo per inoltrare traffico TCP insicuro attraverso SSH per renderlo sicuro e non decifrabile. Esistono due tipi di port forwarding, local e remote, noti rispettivamente come outgoing tunnel (tunnel in uscita) e incoming tunnel (tunnel in entrata).
Local port forwarding
Il mio obiettivo e' raggiungere una servizio su una macchina ed una porta che non vedo direttamente, quindi passo per una macchin a cui ho accesso e da questa raggiungo il servizio (la macchina a cui ho accesso raggiunge il servizo a cui voglio arrivare).
ssh mio-nome-utente-sul-server@10.0.0.2 -L 8081:10.0.0.1:8080
http://localhost:8081 ---> va su http://10.0.0.1:8080 tramite ssh ed il server 10.0.0.2
e' possibile fare il foward di piu' porte
ssh mio-nome-utente-sul-server@10.0.0.2 -L 8081:10.0.0.1:8080 -L 81:10.0.0.1:80
Remote port forwarding
In questo caso volgio esporre, un servizio dalla mia macchina ma per qualche ragione non sono visibile al fruitore, quindi espongo il servizio su una macchina remota e i fruitori lo consutano tramite questa macchina.
ssh -R 8081:127.0.0.1:8080 user@10.0.0.2
a questo punto il mio servizio e' consultabile sulla dalla macchina http://10.0.0.2:8081