SSH Tunnel und Reverse SSH Tunnel verständlich erklärt

Tags: linux ssh networking security

Inhaltsverzeichnis

SSH Tunnel und Reverse SSH Tunnel – sicherer Zugriff ohne offene Ports

SSH ist für viele Administratoren und Entwickler ein alltägliches Werkzeug. Meist wird es genutzt, um sich per Kommandozeile auf einem Server anzumelden. Was viele jedoch unterschätzen: SSH kann deutlich mehr als nur ein Login-Tool sein.
Mit SSH-Tunneln lassen sich Dienste sicher erreichbar machen, ohne Ports im Internet zu öffnen. Genau darum geht es in diesem Artikel.

Vielleicht stellst du dir jetzt die Frage: Wozu brauche ich überhaupt SSH-Tunnel?
Die Antwort ist einfach: Sicherheit, Flexibilität und Kontrolle.

Warum überhaupt SSH-Tunnel?

In der Praxis gibt es zwei sehr häufige Szenarien:

1. SSH Tunnel (Local Port Forwarding)

Du möchtest von deinem eigenen Rechner auf einen Dienst zugreifen, der nur lokal auf einem Server läuft, zum Beispiel:

  • eine MySQL- oder PostgreSQL-Datenbank (localhost:3306 oder localhost:5432)
  • ein interner Webdienst
  • eine Admin-Oberfläche, die bewusst nicht öffentlich erreichbar ist

Mit einem SSH-Tunnel wird dieser entfernte Dienst verschlüsselt auf einen lokalen Port deines Rechners weitergeleitet. Für deine Anwendung sieht es so aus, als würde der Dienst lokal laufen – tatsächlich läuft er aber auf dem Server.

2. SSH Reverse Tunnel (Remote Port Forwarding)

Hier ist die Situation genau andersherum:

  • Ein Rechner oder Server ist nicht direkt aus dem Internet erreichbar
  • z. B. wegen NAT, CGNAT, Firewall oder fehlender Portfreigaben
  • typisch für Heimserver, TrueNAS, Home Assistant oder IoT-Systeme

Der interne Server baut aktiv eine SSH-Verbindung zu einem öffentlichen Server auf. Über diesen öffentlichen Server kannst du anschließend von außen zurück auf dein internes System zugreifen.

SSH Tunnel (Local Port Forwarding) in der Praxis

Stellen wir uns ein klassisches Szenario vor:
Du möchtest auf einem Server eine Datenbank überprüfen. Die Datenbank läuft aus Sicherheitsgründen nur auf localhost und ist nicht öffentlich erreichbar.

Du nutzt auf deinem Rechner zum Beispiel DBeaver, ein kostenloses und weit verbreitetes Datenbank-Tool.
Wenn du jetzt einfach versuchst, dich mit der öffentlichen IP-Adresse des Servers zu verbinden, funktioniert das nicht – und das ist auch gut so.
Die Datenbank direkt ins Internet zu stellen wäre ein unnötiges Sicherheitsrisiko.

Die bessere Lösung: SSH Tunnel

Mit einem SSH-Tunnel leitest du einen lokalen Port auf deinem Rechner an einen lokalen Port auf dem Server weiter.

ssh -N -L localhost:3306:127.0.0.1:3306 root@dein-server.de

Erklärung der Parameter

  • ssh
    Startet die SSH-Verbindung.

  • -N
    Es wird kein Kommando auf dem Server ausgeführt. Die Verbindung dient ausschließlich dem Tunnel.

  • -L (Local Port Forwarding)
    Syntax:

    [lokale Adresse]:[lokaler Port]:[Zieladresse]:[Zielport]

    In unserem Beispiel:

    • localhost:3306 → lokaler Port auf deinem Rechner

    • 127.0.0.1:3306 → Datenbank-Port auf dem Server

  • root@dein-server.de
    Benutzer und Zielserver für die SSH-Verbindung

Nutzung in DBeaver

Nachdem der Tunnel aufgebaut ist:

  • öffnest du DBeaver

  • legst eine neue Datenbankverbindung an

  • als Host trägst du localhost ein

  • als Port 3306

DBeaver verbindet sich nun mit deinem lokalen Port, der verschlüsselt über SSH zur Datenbank auf dem Server weitergeleitet wird.
Die Datenbank selbst bleibt weiterhin nicht öffentlich erreichbar.

SSH Reverse Tunnel (Remote Port Forwarding)

Jetzt drehen wir das Szenario um.
Angenommen, du möchtest von unterwegs auf die TrueNAS Web-UI zugreifen, die bei deinen Eltern im Heimnetz läuft.

Probleme dabei:

  • keine öffentliche IPv4-Adresse

  • CGNAT oder NAT beim Internetanbieter

  • keine Portweiterleitungen möglich oder gewünscht

Lösung: Reverse SSH Tunnel

Der TrueNAS Server im Heimnetz baut aktiv eine SSH-Verbindung zu einem öffentlichen Server (z. B. einem VPS) auf.
Der öffentliche Server stellt dann einen Port bereit, über den du auf das interne System zugreifen kannst.

ssh -N -R 0.0.0.0:80:localhost:80 root@dein-server.de

Erklärung der Parameter

  • -R (Remote Port Forwarding)
    Syntax:

    [öffentliche Adresse]:[öffentlicher Port]:[lokale Adresse]:[lokaler Port]

    In diesem Beispiel:

    • 0.0.0.0:80 → Port 80 auf dem öffentlichen Server

    • localhost:80 → Web-UI von TrueNAS im Heimnetz

  • -N
    Auch hier wird kein Kommando ausgeführt, nur der Tunnel aufgebaut.

Wichtig zu wissen

Damit 0.0.0.0 funktioniert, muss auf dem öffentlichen Server in der SSH-Konfiguration Folgendes gesetzt sein:

GatewayPorts yes oder GatewayPorts clientspecified

Andernfalls ist der Port nur lokal auf dem Server erreichbar (127.0.0.1).

Ergebnis

Du kannst nun im Browser die IP oder Domain deines öffentlichen Servers aufrufen.
Die Verbindung wird automatisch über den SSH-Tunnel zur TrueNAS Web-UI im Heimnetz weitergeleitet – ohne Portfreigabe am Router.

Kombinierter SSH Tunnel (Best Practice)

In der Praxis ist es oft sinnvoll, beide Varianten zu kombinieren, um den Zugriff noch weiter abzusichern.

Typisches Szenario

  1. Dein Laptop baut einen SSH Tunnel zum öffentlichen Server auf

  2. Dein Heimserver (z. B. TrueNAS) baut einen Reverse SSH Tunnel zum gleichen Server auf

  3. Der öffentliche Server fungiert nur als Vermittler

Ergebnis:

  • Die Web-UI ist nicht öffentlich im Internet sichtbar

  • Der Zugriff ist nur möglich, wenn beide SSH-Verbindungen aktiv sind

  • Kein direkter Zugriff von außen

Dieses Setup eignet sich hervorragend für:

  • Heimserver

  • Wartungszugriffe

  • temporäre Admin-Zugänge

Sicherheitshinweise und Best Practices

  • Nutze SSH-Keys statt Passwörter

  • Beschränke SSH-Zugriffe per Firewall

  • Verwende nach Möglichkeit nicht privilegierte Ports

  • Beende Tunnel nach der Nutzung

  • Für dauerhafte Tunnel: systemd Dienst verwenden

  • Logs regelmäßig prüfen

SSH-Tunnel sind extrem mächtig – aber nur dann sicher, wenn sie bewusst eingesetzt werden.

Fazit

SSH-Tunnel und Reverse SSH-Tunnel sind einfache, aber sehr wirkungsvolle Werkzeuge, um Dienste sicher erreichbar zu machen.
Du vermeidest offene Ports, reduzierst Angriffsflächen und behältst die volle Kontrolle über deine Infrastruktur.

Gerade für:

  • Datenbanken

  • Admin-Oberflächen

  • Heimserver

  • Wartungszugriffe

sind SSH-Tunnel oft die sauberste und sicherste Lösung.

Um meine Arbeit und Inhalte zu unterstützen, stelle ich dir einen Affiliate-Link zur Verfügung.
Solltest du über diesen Link ein Produkt bei Netcup mieten, erhalte ich eine kleine Provision.
Für dich entstehen dadurch keine zusätzlichen Kosten.

netcup.com

Transparenz ist mir wichtig:

  • Dieser Beitrag dient ausschließlich Informationszwecken.

  • Die Nutzung des Affiliate-Links ist vollkommen freiwillig.

Vielen Dank, falls du dich entscheidest, mich auf diesem Weg zu unterstützen!