Zum Inhalt springen
kaiport

Port-Weiterleitungen

Ports durch SSH tunneln – lokale (-L), entfernte (-R) und SOCKS5-Weiterleitung (-D), mit Beispielen für Datenbanken, Weboberflächen und Proxys.

Port-Weiterleitungen leiten Netzwerkverbindungen durch eine SSH-Sitzung – etwa um eine Datenbank zu erreichen, die nur auf dem Server lauscht, oder um über den Server als Proxy zu surfen. In kaiport gehören Weiterleitungen zu einer SSH-Verbindung: Sie starten, sobald die Sitzung verbunden ist, und enden mit ihr. Diese Seite erklärt die drei Arten, die Einrichtung und das Zusammenspiel mit Jump-Hosts.

Arten der Weiterleitung

ArtWie bei OpenSSHWer lauschtWohin die Verbindung geht
Lokal (-L)ssh -LDein Mac, auf Lausch-Adresse und Lausch-Port.Über den Server zu Ziel-Host und Ziel-Port. Der Server baut die Verbindung auf, localhost ist also der Server selbst.
Remote (-R)ssh -RDer Server, auf Lausch-Adresse und Lausch-Port.Zurück durch den Tunnel zu Ziel-Host und Ziel-Port, aufgebaut von deinem Mac. localhost ist dein Mac.
SOCKS5 (-D)ssh -DDein Mac, als SOCKS5-Proxy.Wohin das Programm will, das den Proxy nutzt; die Verbindung geht vom Server aus.

Weiterleitungen gibt es nur für SSH-Verbindungen, nicht für Speicherverbindungen.

Eine Weiterleitung anlegen

  1. Öffne die Verbindung mit Bearbeiten und wechsle zum Tab Erweitert (Advanced).
  2. Klicke unter Port-Weiterleitungen auf Weiterleitung. Eine neue Regel erscheint: Lokal (-L) von 127.0.0.1:8080 nach localhost:80, bereits aktiv.
  3. Wähle die Art: Lokal (-L), Remote (-R) oder SOCKS5 (-D).
  4. Gib Lausch-Adresse und Lausch-Port ein.
  5. Bei lokaler und entfernter Weiterleitung trägst du rechts vom Pfeil Ziel-Host und Ziel-Port ein.
  6. Klicke auf Speichern.
Port-Weiterleitungen im Tab „Erweitert“
Der Tab „Advanced“ einer SSH-Verbindung mit Regeln für Port-WeiterleitungenDer Tab „Advanced“ einer SSH-Verbindung mit Regeln für Port-Weiterleitungen

Port-Weiterleitungen im Tab „Erweitert“

FeldLokal (-L)Remote (-R)SOCKS5 (-D)
Lausch-AdresseAdresse auf deinem Mac, meist 127.0.0.1.Adresse auf dem Server, meist 127.0.0.1.Adresse des Proxys auf deinem Mac, meist 127.0.0.1.
Lausch-PortPort auf deinem Mac.Port auf dem Server.Port des Proxys.
Ziel-HostHost aus Sicht des Servers.Host aus Sicht deines Macs.–
Ziel-PortPort auf dem Ziel-Host.Port auf dem Ziel-Host.–
AktivSchaltet die Regel ein oder aus.Schaltet die Regel ein oder aus.Schaltet die Regel ein oder aus.

Eine leere Lausch-Adresse gilt als 127.0.0.1; der Port ist dann nur vom selben Mac aus erreichbar.

Mehrere Regeln

Eine Verbindung kann beliebig viele Regeln haben. Jede Regel hat ihren eigenen Schalter Aktiv, du kannst einen Tunnel also abschalten, ohne ihn zu löschen; das Papierkorb-Symbol löscht ihn. Die Karte im Startfenster zeigt die Zahl der Regeln, etwa 3 Tunnel – aktive wie inaktive.

Wann Tunnel laufen

  • kaiport startet die aktiven Regeln, sobald die Sitzung nach der Anmeldung verbunden ist.
  • Die Tunnel enden mit der Sitzung: wenn du den Tab oder Bereich schließt oder die Verbindung abbricht. Beim Wiederverbinden starten sie neu.
  • Änderungen an den Regeln gelten ab der nächsten Verbindung. Eine laufende Sitzung behält die Regeln, mit denen sie gestartet ist.
  • Tunnel gehören zu einer Sitzung. Öffnest du dieselbe Verbindung zweimal, kann die zweite Sitzung nicht auf den Ports lauschen, die die erste schon belegt.

Einen Tunnel prüfen

kaiport zeigt keinen Status für einzelne Tunnel. Kann eine Regel nicht starten, verbindet sich die Sitzung trotzdem ganz normal – nur dieser Tunnel fehlt. Um einen lokalen Tunnel oder den Proxy zu prüfen, richte ein Programm auf den Lausch-Port: Antwortet dort nichts, ist die Regel nicht gestartet. Häufige Gründe:

  • Der Lausch-Port ist auf deinem Mac schon belegt, etwa von einer lokalen Datenbank oder einer anderen Sitzung mit derselben Regel.
  • Der Server erlaubt keine Weiterleitungen (AllowTcpForwarding in seiner sshd_config). Ein lokaler Tunnel nimmt Verbindungen dann zwar an, schließt sie aber sofort wieder.
  • Bei entfernter Weiterleitung lehnt der Server den Port ab: Ports unter 1024 brauchen eine Anmeldung als root.
  • Bei entfernter Weiterleitung auf 0.0.0.0 bindet der Server trotzdem nur an 127.0.0.1, solange seine sshd_config nicht GatewayPorts clientspecified oder GatewayPorts yes setzt.
  • Das Ziel nimmt die Verbindung nicht an, etwa weil der Dienst nicht läuft oder der Ziel-Host falsch ist.

Beispiele

Eine Datenbank auf dem Server erreichen

PostgreSQL läuft auf dem Server und lauscht nur auf 127.0.0.1:5432. Lege diese Regel an:

ArtLausch-AdresseLausch-PortZiel-HostZiel-Port
Lokal (-L)127.0.0.15433localhost5432

Verbinde dich und richte deinen Datenbank-Client auf Port 5433 deines Macs:

bash
psql -h 127.0.0.1 -p 5433 -U app appdb

Mit 5433 auf deiner Seite kommst du einem PostgreSQL auf deinem eigenen Mac nicht in die Quere.

Eine interne Weboberfläche öffnen

Eine Admin-Oberfläche läuft auf 10.0.0.12:8080 im privaten Netz des Servers. Lege eine Regel Lokal (-L) von 127.0.0.1 Port 8080 nach 10.0.0.12 Port 8080 an, verbinde dich und öffne http://localhost:8080 im Browser.

Den Server als SOCKS-Proxy nutzen

Lege eine Regel SOCKS5 (-D) auf 127.0.0.1 Port 1080 an. Trage nach dem Verbinden im Browser oder in den Netzwerkeinstellungen deines Systems den SOCKS5-Proxy 127.0.0.1, Port 1080 ein. Websites sehen dann die Adresse des Servers, und du erreichst Hosts im Netz des Servers.

Der Proxy vermittelt TCP-Verbindungen (CONNECT) ohne Passwort. Schickt ein Programm Hostnamen an den Proxy, löst der Server sie auf.

Einen lokalen Entwicklungsserver auf dem Server bereitstellen

Deine Web-App läuft auf deinem Mac unter localhost:3000, und ein Dienst auf dem Server soll sie aufrufen. Lege diese Regel an:

ArtLausch-AdresseLausch-PortZiel-HostZiel-Port
Remote (-R)127.0.0.18080localhost3000

Auf dem Server erreicht curl http://127.0.0.1:8080 jetzt deinen Entwicklungsserver.

Tunnel und Jump-Hosts

Mit einem Jump-Host läuft die SSH-Sitzung über den Jump-Host zum Ziel, und die Tunnel starten auf dem Zielserver. Ziel-Hosts gelten deshalb aus Sicht des Ziels: localhost in einer lokalen Regel ist der Zielserver, nicht der Jump-Host.

Beispiel: Der Datenbankserver db-01 ist nur über bastion erreichbar. Gib der Verbindung db-01 den Jump-Host bastion und die Regel Lokal (-L) von 127.0.0.1:5433 nach localhost:5432. Nach dem Verbinden erreicht dein Datenbank-Client die Datenbank auf db-01 über Port 5433 deines Macs.

Tunnel auf einem anderen Gerät

Die Weiterleitungsregeln gehören zur Verbindung und zu ihrem Export. Importierst du die Verbindung auf einem anderen Mac, starten ihre Tunnel dort, sobald du dich verbindest – achte darauf, dass die Lausch-Ports auf jedem Mac frei sind. kaiport für iPhone und iPad behält die Regeln einer importierten Verbindung, öffnet sie aber nicht.