Grundlegendes zu SSH-Tunneln

15

Ich habe einen Linux-Server (Ubuntu), auf den ich nur über ssh (Port 22) als Root zugreifen kann. Auf diesem Server wartet eine MySQL-Datenbank auf Port 3306. Ist es möglich, Putty (auf meinem Computer) und Tunneling (auf dem Linux-Computer) zu verwenden, um einen Tunnel von einem lokalen Port auf meinem Computer (z. B. 4000) zum zu erstellen Linux-Server auf Port 22 und dann vom Server auf sich selbst auf Port 3306?

Muhammad Gelbana
quelle

Antworten:

20

Ich habe ein paar Skizzen gezeichnet

Die Maschine, auf der der Befehl ssh tunnel eingegeben wird (oder in Ihrem Fall: Putty with tunneling wird gestartet), heißt »your host« .

SSH-Tunnel ab lokalen


SSH-Tunnel aus der Ferne

Einführung

  1. lokal: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostbedeutet: verbinde dich mit ssh zu connectToHostund leite alle Verbindungsversuche an den lokalen sourcePort Port onPortdes aufgerufenen Rechners weiter forwardToHost, der vom connectToHostRechner aus erreichbar ist.

  2. Fernbedienung: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostbedeutet: verbinde dich mit ssh zu connectToHostund leite alle Verbindungsversuche an den entfernten sourcePort Port onPortdes angerufenen Rechners weiter forwardToHost, der von deinem lokalen Rechner aus erreichbar ist.

Dein Beispiel

Das erste Bild zeigt Ihre Situation. Die blaue Box, die aufgerufen wird, your hostist Ihr Windows-Computer, von dem aus Sie Putty auf Ihren Ubuntu-Server starten, der remotehostin meinem Image aufgerufen wird. Verbindungen in dem grün Port (in Ihrer Fall Portnummer 4000) an dem rosa MySQL Port weitergeleitet 3306von der localhostIhrer Ubuntu - Server - Maschine (dh des Ubuntu - Server selbst).

Zum Einrichten mit Putty

Starten Sie Putty und geben Sie Ihre üblichen Verbindungseinstellungen ein (Hostname oder IP-Adresse). Navigieren Sie in der Baumstruktur auf der linken Seite zu

Verbindung → SSH → Tunnel

Erstellen Sie einen neuen lokalen Tunnel mit dem Quellport 4000(123 im Bild) und dem Ziel localhost:3306(localhost: 456 im Bild).

Vergessen Sie nicht, auf Hinzufügen zu klicken .

Navigieren Sie dann zurück zur Sitzung und klicken Sie auf Speichern , um Ihre Einstellungen für das nächste Mal beizubehalten. Jetzt können Sie die gespeicherte Verbindung verwenden, um sich bei Ihrem Server anzumelden. Nachdem Sie sich erfolgreich angemeldet haben, stellen Sie jedes Mal, wenn Sie eine Verbindung zu Port 4000 auf Ihrem Host herstellen, eine Verbindung zu Port 3306 auf dem Ubuntu-Server her.

Vorwärtstunnel mit Kitt erstellen

erik
quelle
Sehr gut, danke für die Illustration. Ich weiß es zu schätzen, dass Sie Tunnel vom Typ "Remote" hinzugefügt haben, die ich in meinen Antworten nicht behandelt habe.
Guss
1
Diese Antwort ist fantastisch
Mauricio Pasquier Juan
2
Fantastische und sehr anschauliche Antwort +1
rkachach
1
Wie das so wenig Stimmen hat ist schade.
Ryan Fisher
1
Ich liebe diese Skizzen. Bild sagt mehr als tausend Worte.
Qartal
16

Die einfache Antwort lautet "Ja". Beachten Sie jedoch, dass der Tunnel tatsächlich auf Ihrem Computer gestartet wurde. Die Funktionsweise besteht darin, dass Sie eine SSH-Verbindung zum Server herstellen (die sicher ist) und dann den SSH anweisen, einen Port auf Ihrer Seite abzuhören und alle eingehenden Verbindungen weiterzuleiten - zu einem bestimmten Port auf einer bestimmten Hostadresse auf der Serverseite. Das Ziel des Tunnels muss nicht derselbe Server sein - es kann sich um eine beliebige andere gültige Adresse handeln, die - falls nicht der Server, auf dem der SSH-Server selbst ausgeführt wird - die eingehende Verbindung so sieht, als ob sie vom SSH-Server statt vom SSH-Server stammte von Ihrem Kunden.

Um es einzurichten, öffnen Sie den Putty-Konfigurationsdialog, wählen Sie die Einstellung der Verbindung, die Sie normalerweise für den Zugriff auf Ihren Server verwenden, und klicken Sie auf "Laden" (und nicht auf "Öffnen"). Navigieren Sie dann in der Baumstruktur auf der linken Seite zu Connection-> SSH-> Tunnels und erstellen Sie einen neuen "lokalen" Tunnel mit dem Quellport 4000 und dem Ziel "localhost: 3306" (da die Zieladresse auf dem Server aufgelöst wird, Aus Sicht des Servers befindet sich der MySQL-Port auf dem Localhost. Navigieren Sie dann zurück zu "Sitzung" und klicken Sie auf "Speichern", um Ihre Einstellungen für das nächste Mal beizubehalten. Jetzt können Sie die gespeicherte Verbindung verwenden, um sich bei Ihrem Server anzumelden. Nachdem Sie sich erfolgreich angemeldet haben, stellen Sie jedes Mal, wenn Sie eine Verbindung zu Port 4000 auf Ihrem Computer herstellen, eine Verbindung zu Port 3306 auf dem Server her.

Wenn Sie sich ernsthaft mit Tunneln beschäftigen und einen MS-Windows-Client ausführen , empfehle ich Ihnen, sich den Putty Tunnel Manager anzusehen, der Putty zum einfachen Einrichten und Ausführen von Tunneln verwendet, ohne dass eine offene Putty-Konsole erforderlich ist.

Guss
quelle