SSH-Tunnel (Portweiterleitung)¶
SSH-Tunnels leiten den Datenverkehr sicher zwischen lokalen und entfernten Ports über eine verschlüsselte SSH-Verbindung weiter. korTTY unterstützt drei Tunnelarten: lokales Port-Forwarding, entferntes Port-Forwarding und dynamisches Port-Forwarding (SOCKS-Proxy). Sie funktionieren wie die Optionen -L, -R und -D von OpenSSH und laufen über die Login-Sitzung des Terminal-Tabs, sodass kein zweites Login erforderlich ist.
Tunnel konfigurieren¶
- Öffnen Sie eine Verbindung zum Bearbeiten: Verbindungen > Verbindungen verwalten → Verbindung auswählen → Bearbeiten.
- Navigieren Sie zur Registerkarte SSH-Tunnel.
- Klicken Sie auf Hinzufügen, wählen Sie den Typ und füllen Sie die Felder aus. Ein neuer Tunnel startet mit angekreuztem Tunnel aktivieren.
- Klicken Sie auf Speichern im Tunnel-Dialog, dann auf Speichern im Verbindungseditor. Abbrechen im Verbindungseditor verwirft jeden Tunnel, den Sie seit dem Öffnen hinzugefügt, bearbeitet oder entfernt haben.
Tunnelkonfigurationsfelder¶
Der Tunnel-Dialog benennt seine Felder nach der Rolle, die sie für den gewählten Typ spielen, und listet immer zuerst die Adresse auf, die lauscht, gefolgt von der Adresse, zu der die Verbindungen weitergeleitet werden.
| Feld | Lokal (-L) | Remote (-R) | Dynamischer SOCKS-Proxy (-D) |
|---|---|---|---|
| Lauscht auf | Lokale Bind-Adresse und Lokaler Port auf Ihrem Computer | Remote-Bind-Adresse und Remote-Port auf dem SSH-Server | Lokale Bind-Adresse und Lokaler Port auf Ihrem Computer |
| Weiterleitung zu | Remote-Host und Remote-Port, wie vom SSH-Server gesehen | Lokaler Host und Lokaler Port, wie von Ihrem Computer aus gesehen | Unabhängig vom Ziel, das der SOCKS-Client anfordert |
| Standard-Bind-Adresse | localhost |
localhost |
localhost |
| Beschreibung | Optionaler Bezeichner | Optionaler Bezeichner | Optionaler Bezeichner |
| Tunnel aktivieren | Nur aktivierte Tunnel werden geöffnet | Nur aktivierte Tunnel werden geöffnet | Nur aktivierte Tunnel werden geöffnet |
Eine Bindungsadresse von localhost (oder ein leeres Feld) hält den Listener privat für den Computer, auf dem er läuft. Sobald Sie eine andere Adresse eingeben, z. B. 0.0.0.0 oder ein Netzwerkinterface, warnt das Dialogfeld, dass andere Computer den Tunnel erreichen können; bei einem Remote-Tunnel fügt die Warnung hinzu, dass der SSH-Server eine solche Adresse nur akzeptiert, wenn seine GatewayPorts-Einstellung dies zulässt.
Mehrere Tunnel können pro Verbindung konfiguriert werden. Deaktivierte Tunnel bleiben in der Konfiguration, werden aber nicht geöffnet, wenn die Verbindung hergestellt wird.
Die Tunnelliste¶
Der Tab SSH-Tunnel listet jeden Tunnel in der Reihenfolge, wie die ssh-Optionen gelesen werden, Listener zuerst: ✓ L localhost:8080 -> db:5432, ✓ R localhost:9090 -> localhost:3000 oder ○ D localhost:1080 (SOCKS), gefolgt von seiner Beschreibung. ✓ markiert einen aktivierten Tunnel und ○ einen deaktivierten. Ein Tunnel, der von anderen Computern erreicht werden kann, ist in der Liste entsprechend gekennzeichnet, sodass ein vergessener 0.0.0.0 auffällt.
SSH-Tunnel aktivieren über der Liste schaltet alle Tunnel der Verbindung gleichzeitig ein oder aus. Es ist aktiviert, wenn alle Tunnel aktiv sind und zeigt einen Bindestrich an, wenn nur einige aktiv sind; ein Klick auf den Bindestrich aktiviert alle. Einen einzelnen Tunnel zu schalten erfolgt über Tunnel aktivieren in seinem eigenen Dialog.
Tunneltypen¶
Lokale Portweiterleitung (-L)¶
Leiten Sie einen lokalen Port über den SSH-Tunnel an einen Remotedienst weiter.
Beispielanwendungsfall: Greifen Sie auf einen Remote-Datenbankserver zu, der von Ihrem Computer aus nicht direkt erreichbar ist.
- Lokale Bind-Adresse:
localhost - Lokaler Port:
8080 - Remote Host:
database-server(oder IP) - Remote Port:
5432
Sobald Sie verbunden sind, verbinden Sie sich mit der Remote-Datenbank über localhost:8080 auf Ihrem Rechner.
Remote-Port-Weiterleitung (-R)¶
Machen Sie einen lokalen Dienst auf dem SSH-Server zugänglich.
Beispielanwendung: Lassen Sie ein Programm auf dem SSH-Server einen Entwicklungsserver auf Ihrem Rechner erreichen.
- Remote-Bind-Adresse:
localhost(die Adresse, auf der der SSH-Server lauscht) - Remote Port:
9090(der Port, auf dem der SSH-Server lauscht) - Lokaler Host:
localhost(wo Ihr Computer jede Verbindung weiterleitet) - Lokaler Port:
3000(Ihr lokaler Dienst)
Nach dem Verbinden erreichen Programme auf dem SSH-Server Ihren Dienst unter localhost:9090. Wie OpenSSH fordert korTTY den Server auf, nur auf seiner Loopback-Adresse zu lauschen. Das Setzen von Remote-Bind-Adresse auf 0.0.0.0 fordert den Server auf, Verbindungen aus seinem Netzwerk ebenfalls zu akzeptieren; ein OpenSSH-Server tut dies nur, wenn seine GatewayPorts-Einstellung clientspecified ist, und korTTY kennzeichnet einen solchen Tunnel im Tunnel-Dialog, in der Tunnelliste und in der Statusleiste als von anderen Computern erreichbar. Ein Server mit GatewayPorts yes lauscht auf allen seinen Adressen für jeden Remote-Tunnel, egal welche Bind-Adresse Sie eingeben.
Dynamische Portweiterleitung (-D)¶
Erstellen Sie einen SOCKS-Proxy für Netzwerkverkehr über den SSH-Tunnel.
Beispielhafter Anwendungsfall: Verschlüsseln Sie den gesamten Datenverkehr von Ihrem Browser oder Ihrer Anwendung, indem Sie ihn durch den SSH-Tunnel leiten.
- Lokale Bind-Adresse:
localhost - Lokaler Port:
1080(oder jeder verfügbare Port)
Konfigurieren Sie Ihren Browser oder Ihre Anwendung so, dass sie localhost:1080 als SOCKS5-(oder SOCKS4)-Proxy verwendet. Hostnamen werden vom SSH-Server aufgelöst.
Note
Ein dynamischer Tunnel verwendet nur die lokale Bindadresse und den lokalen Port; die Remote-Felder sind für diesen Typ deaktiviert.
Wenn Tunnel geöffnet sind¶
- Einmal pro Terminal-Tab: die Tunnel öffnen sich unmittelbar nach dem Login in der ersten SSH-Sitzung des Tabs und bleiben offen, solange der Tab verbunden ist. Aufgeteilte Panes öffnen sie nicht erneut und stehen auch nicht im Konflikt mit ihnen.
- Einmal gefragt: Beim ersten Öffnen der Tunnel einer Verbindung listet korTTY sie auf und fragt Tunnel öffnen oder Nicht jetzt. Nicht jetzt ist die Standardtaste, sodass ein Tastendruck, den Sie noch in das Terminal eingeben, wenn die Frage erscheint, sie nicht öffnet. Die Frage trägt den Titel SSH-Tunnel und listet jeden Tunnel so auf, wie er in der Tunnelliste erscheint, wobei markiert wird, welche anderen Computer ihn erreichen können. Die Antwort wird für diese Verbindung gespeichert; korTTY fragt erneut, wenn sich seine Tunnel oder sein Server ändern – das ist der Fall, wenn ein Tunnel hinzugefügt, entfernt, aktiviert oder deaktiviert wird, eine andere Adresse, Port oder Art erhält oder wenn die Verbindung zu einem anderen Server zeigt. Eine geänderte Beschreibung zählt nicht, und Tunnel, die ohnehin nicht öffnen konnten, werden nicht aufgeführt: stattdessen meldet die Statusleiste sie, und wenn keiner der Tunnel öffnen konnte, fragt korTTY überhaupt nicht. Nicht jetzt gilt für den Tab, einschließlich seiner Wiederverbindungen – öffnen Sie die Verbindung in einem neuen Tab, um erneut gefragt zu werden.
- Neu verbinden: Eine manuelle oder automatische Neuverbindung schließt zunächst die Tunnel und öffnet sie anschließend in der neuen Sitzung.
- Bereiche schließen: Wenn Sie den Bereich schließen, in dem die Tunnel laufen (oder dort
exiteingeben), während ein Bereich offen bleibt, der mit Rechts teilen (gleicher Server) oder Unten teilen (gleicher Server) aus einem Bereich auf dem Server des Tabs geöffnet wurde, wechseln die Tunnel in diesen Bereich. Bereiche, die mit Rechts teilen (neue Verbindung) oder Unten teilen (neue Verbindung) geöffnet wurden, und die daraus erstellten Teilungen zum gleichen Server übernehmen sie nie, auch wenn sie sich mit demselben Server verbinden. - Tab schließen schließt seine Tunnel.
- Zwei Tabs, eine Verbindung: Jeder Tab öffnet eigene Tunnel, sodass im zweiten Tab ein lokaler oder dynamischer Tunnel meldet, dass die Adresse bereits verwendet wird, und ein Remote-Tunnel meldet, dass der SSH-Server ihn abgelehnt hat. Der erste Tab bleibt funktionsfähig.
- Nicht geöffnet von SFTP-Tabs, Mosh-Verbindungen (die Statusleiste sagt, dass Tunnel das SSH-Protokoll benötigen), oder für Aufteilungen zu einem anderen Server.
- Serverseitig: Der SSH-Server muss Weiterleitung zulassen (
AllowTcpForwardingin OpenSSH). Ein Remote-Tunnel, den der Server ablehnt (Weiterleitung deaktiviert oder sein Port bereits auf dem Server in Benutzung), wird in der Statusleiste angezeigt; die anderen Tunnel bleiben offen.
Statusleiste¶
Während ein Tab Tunnel hat, zeigt seine Statusleiste Tunnels: 2/3 active, gefolgt vom ersten fehlgeschlagenen Tunnel und dem Grund (zum Beispiel Address already in use) sowie dem ersten Tunnel, den andere Computer erreichen können. Wenn keiner der Tunnel des Tabs starten konnte, sagt die Statusleiste stattdessen in einem Satz: dass die Tunnel von Ihrer Organisation deaktiviert sind, dass sie für diesen Tab nicht erlaubt sind oder dass sie das SSH-Protokoll benötigen.
Bewegen Sie die Maus über die Statusleiste, um jeden Tunnel in einer eigenen Zeile mit seinem Status anzuzeigen:
| Status | Bedeutung |
|---|---|
| wird gestartet | die Weiterleitung wird angefordert |
| aktiv auf Adresse | die Weiterleitung lauscht an dieser Adresse; ein aktiver Tunnel, von dem andere Computer ebenfalls erreicht werden können, sagt möglicherweise von anderen Computern erreichbar |
| fehlgeschlagen: Grund | die Weiterleitung konnte nicht geöffnet werden oder der Server hat sie abgelehnt |
| gestoppt | die Weiterleitung war offen und ist geschlossen (Neuverbindung, Sitzung beendet oder Tab geschlossen) |
| nicht gestartet: Grund | der Tunnel wurde abgelehnt, bevor etwas geöffnet wurde, siehe die Gründe unten |
Ein fehlgeschlagener oder abgelehnter Tunnel zeigt einen dieser Gründe an:
| Grund | Wenn es erscheint |
|---|---|
| ungültiger Port | der Port liegt nicht zwischen 1 und 65535 |
| der Port konnte nicht geöffnet werden | der lokale Listener konnte nicht erstellt werden; die eigene Meldung des Betriebssystems, wie Address already in use, wird angezeigt, wenn sie eine hat |
| der SSH-Server verweigerte ihn | ein Remote-Tunnel, den der Server nicht akzeptierte, zum Beispiel weil der Port dort in Benutzung ist oder AllowTcpForwarding deaktiviert ist |
| von Ihrer Organisation deaktiviert | die Unternehmensrichtlinie verbietet Portweiterleitung |
| für diesen Tab nicht erlaubt | Sie haben die Frage für diesen Tab abgelehnt; siehe Wenn Tunnel geöffnet werden |
| benötigt das SSH-Protokoll | die Verbindung ist Mosh, welche keine Tunnel transportieren kann |
| geteilte (Teamwork) Verbindungen können sich nur an localhost binden | ein lokaler oder dynamischer Tunnel einer geteilten Verbindung benennt eine andere Adresse |
| geteilte (Teamwork) Verbindungen öffnen niemals entfernte Tunnel | ein entfernter Tunnel einer geteilten Verbindung, der nie geöffnet wird |
Geteilte Verbindungen (Teamarbeit)¶
Tunnel einer Verbindung, die von einer Teamarbeit-Quelle stammt, wurden von der Person geschrieben, die die gemeinsame Datei bearbeitet; daher beschränkt korTTY sie:
- Remote-Tunnel werden nie geöffnet, egal welche Adresse sie angeben: Loopback auf einem gemeinsamen SSH-Server ist von jedem Konto darauf erreichbar.
- Lokale und dynamische Tunnel können nur auf
localhosthören. - Der Rest erfordert noch Ihre einmalige Bestätigung, die darauf hinweist, dass die Tunnel aus der gemeinsamen Datei stammen.
Um einen anderen Tunnel zu verwenden, erstellen Sie Ihre eigene Verbindung zum selben Server und fügen dort den Tunnel hinzu; gemeinsame Verbindungen können im Connection-Manager nicht dupliziert werden.
Organisationsrichtlinie¶
Ein Administrator kann alle Tunnel mit allow-port-forwarding = false in der Unternehmensrichtlinie verbieten. Die Statusleiste sagt dann, dass Tunnel von Ihrer Organisation deaktiviert sind.
Tunnel verwalten¶
- Aktivieren/Deaktivieren: Schalten Sie Tunnel aktivieren an einem Tunnel oder SSH-Tunnel aktivieren für alle, um Tunnel zu aktivieren oder zu deaktivieren, ohne die Konfiguration zu entfernen.
- Bearbeiten: Wählen Sie einen Tunnel aus und klicken Sie auf Bearbeiten, um dessen Einstellungen zu ändern.
- Entfernen: wählen Sie einen Tunnel aus und klicken Sie auf Entfernen, um ihn von der Verbindung zu löschen.
- Mehrere Tunnel: beliebig viele Tunnel können auf einer einzigen Verbindung konfiguriert und gleichzeitig geöffnet werden.
Beim Speichern der Verbindung wird die Änderung sofort auf jeden offenen Tab dieser Verbindung angewendet: ausgeschaltete oder entfernte Tunnel werden geschlossen, und ein geänderter Satz von Tunneln ersetzt den laufenden in derselben Sitzung – nach der einmaligen Frage, sofern Sie genau diesen Satz nicht bereits zugelassen haben. Ein Tab, dessen Tunnel sich nicht geändert haben, hält sie offen, sodass die Bearbeitung nur einer Beschreibung oder einer anderen Einstellung der Verbindung sie nicht unterbricht. Ein Tab, der zu diesem Zeitpunkt getrennt ist oder sich noch anmeldet, öffnet die gespeicherten Tunnel, sobald er verbunden ist.
Importierte Tunnel¶
Tunnel, die aus dem PuTTY Connection Manager importiert wurden, behalten ihren Typ, ihre Ports und den Zielhost bei. Das CSV-Format nennt keine Bind-Adresse, daher bindet korTTY jeden importierten Listener an localhost, was auch PuTTYs Standard für Remote-Tunnel ist. Remote-Tunnels, die frühere Versionen importierten, wurden mit der Remote-Bind-Adresse 0.0.0.0 gespeichert; die Tunnelliste, das Tunnel-Dialogfeld und die Statusleiste kennzeichnen sie als von anderen Computern erreichbar. Setzen Sie daher deren Remote-Bind-Adresse auf localhost, wenn der weitergeleitete Port privat für den Server bleiben soll.
Warning
Ports unter 1024 (wie 80 oder 443) erfordern erhöhte Privilegien: auf Ihrem Computer für lokale und dynamische Tunnel sowie ein Root-Login auf dem SSH-Server für entfernte Tunnel. Verwenden Sie Ports ab 1024, um Berechtigungsprobleme zu vermeiden.