SSH is enorm geavanceerd is zijn mogelijkheden.
Een van de werkelijk geweldige features is de mogelijkheid om te tunnelen en als socks proxy te gebruiken.

De naam tunnelen komt voort uit het feit dat je verkeer stuurt door de opgezette ssh connectie, een tunnel door de internet wolk.

Tunnels

Er zijn drie soort tunnels die je kan opzetten.

1. Lokaal; verkeer van een lokale poort wordt doorgestuurd naar een remote poort
-L [bind_address:]port:host:hostport

2. Remote; verkeer van een remote poort wordt doorgestuurd naar een lokale poort
-R [bind_address:]port:host:hostport

3. Proxy; verkeer van een lokale poort wordt doorgestuurd naar de remote server
-D [bind_address:]port

Voorbeelden

nr 1; Stel je bent op host A en je wil de website van host B benaderen, maar op de firewall staat alleen de ssh poort open (standaard 22).
Start vanaf host A een ssh sessie op naar host B met de lokale tunnel optie:

ssh -L 1080:hostB:80 user@hostB

vereist: de opgegeven poort is een poort op je lokale machine en die moet niet in gebruik zijn.
Op host A ga je met een browser naar http://localhost:1080
et voilà!

nr 2; Dit is net als nummer 1, maar dan anderom. Stel je bent op host A en je wil de website van host B benaderen,
maar op de firewall staat alleen de ssh poort open (standaard 22).
Start vanaf host B een ssh sessie op naar host A met de remote tunnel optie.

ssh -R 1080:localhost:80 user@hostA

vereist: de opgegeven poort is een poort op je lokale machine en die moet niet in gebruik zijn.
Op host A ga je met een browser naar http://localhost:1080
et voilà!

nr 3; Stel je bent op host A en je wil alle interne websites en services van host B benaderen, maar op de firewall staat alleen de ssh poort open (standaard 22).
Start vanaf hostA een ssh sessie op naar hostB met de dynamische proxy optie:

ssh -D 1080 user@hostB

vereist: de opgegeven poort is een poort op je lokale machine en die moet niet in gebruik zijn.
Stel nu de proxy van je browser in op: localhost:1080
et voilà!

Tip

Om een tunnel beschikbaar te maken voor anderen, kan je de optie -g meegeven. Dan wordt de poort niet aan localhost gebonden maar aan alle interfaces.

Gevaar

Waarom wil je mensen geen toegang geven tot servers met ssh?
Omdat het dus zo enorm krachtig is.
Stel iemand zit thuis en wil op zaak kunnen werken.
Maar er is geen toegang mogelijk vanaf buiten en op de zaak is wel internet mogelijk op http en https.
Met ssh is dat geen probleem.
Zet vanaf de zaak een ssh sessie met de thuis server op met de remote tunnel naar de lokale ssh poort. Gebruik thuis de opgezette poort om een ssh sessie terug op te zetten naar de zaak en combineer deze met de proxy optie.
et voilà!

Handige Links

man ssh