Zum Hauptinhalt springen

SSH-Tunnel auf dem Mac einrichten

Von Lucas Russo, Entwickler von SSHive · Aktualisiert am

Lokale, entfernte und SOCKS5-SSH-Tunnel auf macOS, auf der Kommandozeile und im Profileditor von SSHive, wo sie bei jeder Verbindung wiederkommen.

Geschätzte Dauer: 5 Minuten

Ein SSH-Tunnel führt einen Netzwerkport durch eine verschlüsselte SSH-Verbindung, und es gibt drei Arten. Lokal (-L) holt einen Port des entfernten Netzes auf Ihren Mac: eine Datenbank, eine Admin-Seite, alles, was nur der Server erreicht. Remote (-R) macht das Gegenteil und öffnet auf dem Server einen Port, der zu Ihrem Mac zurückführt. Dynamisch (-D) macht aus der Verbindung einen SOCKS5-Proxy für Ihren Browser, dafür gibt es eine eigene SOCKS5-Anleitung. Mit OpenSSH, das macOS mitbringt, ist jeder eine Zeile: ssh -L 5433:db.internal:5432 user@bastion oder ssh -R 8080:localhost:3000 user@server. Die Schritte unten bauen dieselben Tunnel in SSHive, an ein Profil gebunden. Die kostenlose Version enthält 1 lokalen Tunnel; entfernte Tunnel und SOCKS5 brauchen Pro, das auf dem Mac bis zu 10 lokale, 5 entfernte Tunnel und 1 SOCKS-Port pro Profil erlaubt.

Schritt für Schritt

  1. Ein Profil öffnen und „Erweiterte Optionen“ aufklappen

    Seitenleiste › + (Neue Verbindung) oder Rechtsklick auf ein vorhandenes Profil › Bearbeiten. Host, Port, Benutzername und Authentifizierung wie gewohnt ausfüllen, dann unten im Dialog auf Erweiterte Optionen klicken. Unter den Blöcken, die aufklappen, stehen die drei Tunnelarten: Lokale Tunnel (-L), Entfernte Tunnel (-R) und SOCKS5-Proxy (-D).
  2. Einen lokalen Tunnel (-L) hinzufügen, der häufigste Fall

    Unter Lokale Tunnel (-L) auf + Hinzufügen klicken. Drei Felder erscheinen in einer Zeile: lokaler Port (etwa 5433; ab 1024 brauchen Sie kein sudo), entfernter Host (db.internal, so, wie der SSH-Server ihn sieht; localhost, wenn der Dienst auf dem Server selbst läuft) und entfernter Port (5432). Speichern. Der Tunnel steht bei jeder Verbindung mit diesem Profil, nur an 127.0.0.1 gebunden: Ein Feld für die Bind-Adresse gibt es nicht, niemand sonst in Ihrem Netz kann ihn also benutzen. Die kostenlose Version erlaubt 1 lokalen Tunnel, Pro 10 pro Profil.
  3. Einen entfernten Tunnel (-R) hinzufügen, Pro

    Unter Entfernte Tunnel (-R) auf + Hinzufügen klicken. Felder: entfernter Port (der, der sich auf dem SSH-Server öffnet, 8080), lokaler Host (localhost) und lokaler Port (3000). Auf dem Server erreicht curl localhost:8080 jetzt Port 3000 Ihres Macs. In der kostenlosen Version ist der Block ausgegraut; ein Klick auf sein PRO-Badge öffnet das Upgrade-Fenster. Pro erlaubt 5 entfernte Tunnel pro Profil.
  4. Die ⇄-Anzeige in der Statusleiste lesen

    Sobald die Verbindung steht, zeigt die Statusleiste ⇄ N, wobei N die Zahl der aktiven Tunnel ist (lokale, entfernte und SOCKS zusammen). Ein Klick darauf öffnet das Fenster Tunnel-Status: Jeder Tunnel steht dort mit Typ, lokalem Port, Ziel und aktuellem Zustand, dazu eine Schaltfläche zum Schließen. Lässt sich ein Tunnel nicht binden (Port bereits belegt), bleibt die SSH-Sitzung verbunden und der Fehler wird protokolliert; N zählt ihn dann einfach nicht mit.
  5. Automatische Neuverbindung: Die Tunnel kommen mit der Sitzung zurück

    Bricht die SSH-Sitzung ab (WLAN-Wechsel, Ruhezustand, Serverneustart), schließen sich alle Tunnel mit ihr, denn sie leben in der Verbindung. Die automatische Neuverbindung von SSHive holt dann die Sitzung zurück und baut jeden Tunnel des Profils der Reihe nach wieder auf, ohne dass Sie etwas tun müssen. Scheitert ein Tunnel bei jeder Neuverbindung, prüfen Sie den sshd auf der Gegenseite: AllowTcpForwarding yes für lokale und entfernte Tunnel, dazu GatewayPorts yes, wenn ein entfernter Tunnel von außerhalb des Servers erreichbar sein soll.

Häufige Fragen

Endet der Tunnel, wenn meine SSH-Sitzung endet?+
Ja, Tunnel leben mit der SSH-Verbindung. Bricht die Verbindung unerwartet ab, verbindet SSHive sich von selbst neu und baut die Tunnel des Profils mit auf. Für langlaufende Tunnel setzen Sie ServerAliveInterval 60 in OpenSSH oder verlassen sich auf das eingebaute Keepalive von SSHive (standardmäßig alle 30 s).
Kann ich durch eine Kette von Jump-Hosts tunneln?+
Ja. Auf der Kommandozeile geht ssh -J bastion1,bastion2 -L 5432:db:5432 user@target über beide Bastion-Hosts. In SSHive fügen Sie beide Bastion-Hosts in der richtigen Reihenfolge zur Jump-Kette des Zielprofils hinzu, wie es die Anleitung zum Jump-Host zeigt; die Tunnel dieses Profils laufen dann durch die ganze Kette. Jump-Ketten sind Pro.

Passende SSHive-Funktionen

SSH-Tunnel

Lokal, entfernt & SOCKS5-Proxy

SSH-Terminal

GPU-beschleunigtes Terminal

SSHive kostenlos für macOS testen

Holen Sie sich den All-in-one-Client für SSH, SFTP, RDP und VNC auf dem Mac. Kostenloser Download, ohne Registrierung.

SSHive kostenlos laden