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