SSH Tunneling und Port-Forwarding
SSH kann mehr als nur eine Remote-Shell öffnen.
Mit Tunneling lassen sich Ports weiterleiten und Dienste erreichbar machen die eigentlich nicht öffentlich sind.
Lokaler Tunnel — Remote-Port lokal verfügbar machen
Ein Dienst läuft auf dem Server auf Port 8080 aber ist von außen nicht erreichbar.
Mit einem lokalen Tunnel landet er auf dem eigenen Rechner unter localhost:8080.
ssh -L 8080:localhost:8080 benutzer@server
Im Browser dann http://localhost:8080 aufrufen.
Mehrere Ports auf einmal.
ssh -L 8080:localhost:8080 -L 3306:localhost:3306 benutzer@server
Remote-Tunnel — lokalen Port auf dem Server verfügbar machen
Umgekehrter Fall: lokaler Dienst auf Port 3000 soll auf dem Server erreichbar sein.
ssh -R 9000:localhost:3000 benutzer@server
Auf dem Server ist dann localhost:9000 erreichbar und leitet auf den lokalen Rechner weiter.
SOCKS-Proxy
Der gesamte Traffic läuft durch den Server.
ssh -D 1080 benutzer@server
Danach im Browser oder System einen SOCKS5-Proxy auf localhost:1080 eintragen.
Im Hintergrund und ohne Shell
ssh -N -f -L 8080:localhost:8080 benutzer@server
-N öffnet keine Shell, -f schickt den Prozess in den Hintergrund.
Verbindung offen halten
Tunnel brechen ab wenn keine Aktivität ist. In ~/.ssh/config dauerhaft lösen.
Host mein-server
HostName server-ip
User benutzer
ServerAliveInterval 60
ServerAliveCountMax 3