Warum SSH-Tunnel?
Viele Dienste auf einem Server sollen niemals direkt aus dem Internet erreichbar sein: Datenbanken, Admin-Oberflächen, interne Dashboards. Trotzdem musst du gelegentlich von deinem Rechner darauf zugreifen. Die schlechte Lösung ist, einfach den Port zu öffnen und die Firewall durchlässig zu machen. Die gute Lösung heißt SSH-Tunnel.
Ein SSH-Tunnel nutzt die ohnehin vorhandene, verschlüsselte SSH-Verbindung als Transportweg für anderen Netzwerkverkehr. Du brauchst keinen zusätzlichen offenen Port nach außen, keine VPN-Software und kein neues Tool. Wer per ssh auf seinen Server kommt, kann auch tunneln. Genau das macht die Technik so praktisch für alle, die einen VServer mit Root-Zugriff betreiben.
Die drei Spielarten im Überblick
SSH kennt drei Weiterleitungsmodi. Welcher passt, hängt davon ab, in welche Richtung der Verkehr fließen soll:
- Local Forwarding (
-L): Ein Port auf deinem lokalen Rechner wird auf einen Dienst weitergeleitet, den der Server erreicht. Der häufigste Fall. - Remote Forwarding (
-R): Umgekehrte Richtung. Ein Port auf dem Server wird auf einen Dienst weitergeleitet, der bei dir läuft. Praktisch, um etwas von zu Hause kurz erreichbar zu machen. - Dynamic Forwarding (
-D): Macht aus SSH einen SOCKS-Proxy. Anwendungen können dann beliebige Ziele über den Server ansprechen.
Eine Eselsbrücke: Bei -L ziehst du etwas Entferntes zu dir heran, bei -R schiebst du etwas Lokales nach draußen.
Local Forwarding: Datenbank sicher erreichen
Das klassische Beispiel ist eine Datenbank, die nur lokal auf dem Server lauscht. Angenommen, auf deinem Server läuft MySQL auf Port 3306, aber dieser Port ist von außen dicht. Mit Local Forwarding holst du ihn dir auf deinen Rechner:
ssh -L 3307:127.0.0.1:3306 benutzer@dein-server.de
Solange diese Verbindung steht, verhält sich localhost:3307 auf deinem Rechner wie der MySQL-Port des Servers. Du verbindest deinen Client (etwa DBeaver oder die MySQL-Workbench) einfach gegen 127.0.0.1 auf Port 3307. Den lokalen Port 3307 habe ich bewusst gewählt, damit er nicht mit einer lokal laufenden Datenbank kollidiert.
Wichtig ist das Ziel hinter dem ersten Doppelpunkt: 127.0.0.1:3306 wird aus Sicht des Servers aufgelöst. Du könntest dort auch die Adresse eines dritten Rechners eintragen, den nur der Server erreicht, zum Beispiel einen separaten Datenbankserver im internen Netz. So wird dein SSH-Server zum Sprungbrett.
Brauchst du nur den Tunnel und keine interaktive Shell, hängst du -N an. Mit -f schickst du SSH in den Hintergrund:
ssh -fN -L 3307:127.0.0.1:3306 benutzer@dein-server.de
Auch ohne fertigen Datenbank-Tarif nutzbar
Wenn deine Datenbank auf dem eigenen VServer liegt, ist dieser Tunnel oft der sauberste Weg, um sie zu administrieren, ohne MySQL nach außen zu öffnen. Bei einer gehosteten MySQL-Datenbank ist ein eigener Tunnel dagegen meist nicht nötig, weil der externe Zugriff dort bereits über eine verschlüsselte Verbindung und IP-Freigabe geregelt wird.
Remote Forwarding: Dienst ohne offenen Port zeigen
Manchmal willst du das Gegenteil: Ein Dienst läuft bei dir lokal, etwa eine Webanwendung auf Port 8080, und du möchtest sie kurz über den Server erreichbar machen, ohne deinen heimischen Router umzukonfigurieren. Das macht Remote Forwarding:
ssh -R 8080:127.0.0.1:8080 benutzer@dein-server.de
Jetzt zeigt Port 8080 auf dem Server auf deine lokale Anwendung. Standardmäßig lauscht der weitergeleitete Port nur auf 127.0.0.1 des Servers, ist also nur für den Server selbst sichtbar. Soll er auch von außen erreichbar sein, muss in der Server-Konfiguration GatewayPorts entsprechend gesetzt sein. Das ist eine bewusste Entscheidung, denn damit öffnest du einen Zugang von außen.
Remote Forwarding ist ideal für kurze Tests, Demos oder Webhooks, die einen erreichbaren Endpunkt brauchen. Für einen dauerhaften Dienst solltest du ihn aber sauber auf dem Server selbst betreiben.
Dynamic Forwarding: SSH als SOCKS-Proxy
Mit -D baust du einen flexiblen Proxy. SSH öffnet einen lokalen SOCKS-Port, über den Anwendungen beliebige Ziele ansteuern können, und der gesamte Verkehr läuft verschlüsselt über den Server:
ssh -D 1080 benutzer@dein-server.de
Anschließend trägst du in deinem Browser oder Tool 127.0.0.1 Port 1080 als SOCKS5-Proxy ein. Aufrufe gehen dann so ins Netz, als kämen sie vom Server. Das ist nützlich, um interne Dienste zu erreichen, die nur aus dem Server-Netz sichtbar sind, oder um aus einem unsicheren WLAN heraus verschlüsselt zu arbeiten. Anders als -L musst du nicht für jeden Dienst einen eigenen Tunnel definieren.
Stabil halten und absichern
Ein paar Einstellungen machen Tunnel im Alltag angenehmer:
- Verbindung wachhalten: In deiner
~/.ssh/configsorgenServerAliveInterval 60undServerAliveCountMax 3dafür, dass tote Verbindungen erkannt werden. - Automatisch neu verbinden: Werkzeuge wie
autosshbauen abgebrochene Tunnel selbstständig wieder auf, etwa wenn das Netz kurz weg war. - Nur per Schlüssel: Tunnel sind so sicher wie der SSH-Zugang dahinter. Setze auf Public-Key-Authentifizierung statt Passwörtern und deaktiviere den Passwort-Login auf dem Server, wo es geht.
Ein wiederkehrender Tunnel lässt sich auch als Eintrag in ~/.ssh/config mit LocalForward hinterlegen, sodass ein einfaches ssh meinserver die Weiterleitung gleich mitbringt.
Mit Nytrix umsetzen
Für SSH-Tunnel brauchst du vor allem einen Server mit echtem SSH-Zugang. Genau das bekommst du bei einem Nytrix VServer: voller Root-Zugriff per SSH, SSD/NVMe-Speicher und 5 TB Traffic im Monat inklusive. Der No-IP-Tarif startet bei 1,99 EUR (4 vCore, 4 GB RAM, 40 GB), die BASIC-Tarife mit eigener IPv4 beginnen bei 9,99 EUR. Docker ist mit aktiviertem Nesting und Keyctl vorbereitet, und CPU sowie RAM lassen sich per Hot-Plug aufrüsten.
Praktisch für Tunnel-Szenarien: Du kannst eine Datenbank rein lokal auf dem Server betreiben und ausschließlich per -L erreichen, statt einen Port nach außen zu öffnen. Alle Tarife sind Prepaid ohne Mindestlaufzeit, und der DDoS-Schutz über Voxility-Filterung ist inklusive. Beachte, dass Port 25 für Mailversand standardmäßig gesperrt ist. Wer ein selbst gehostetes Git mit eigenem SSH-Zugang sucht, findet das bei Gitea auf Port 2222. Weitere Praxisanleitungen rund um Server und Hosting findest du im Nytrix Blog.