Manchmal kann es ganz nützlich sein einen Port Tunnel zu einem SSH Server zu machen. In meinem Artikel PostgreSQL Server auf Ubuntu installieren konfigurieren wir PostgreSQL so, dass von ausserhalb des Servers kein Zugriff auf den PostgreSQL Server stattfinden darf. Nun möchte ich doch ab und an mal mit einem SQL Tool wie Navicat, DbVisualizer, usw. auf die Datenbank zugreifen. Eine Möglichkeit wäre den Port für meine Maschine auf dem Server frei zu schalten. Doch das ist nicht immer gewünscht.
Nun können wir lokal einen Port Tunnel aufmachen und das geht folgendermassen:
$ ssh -f user@mydomain.com -L <port>:<remote host>:<remote port> -N Parameter: -f Bewirkt dass der Befehl im Hintergrund ausgeführt wird. Somit wird das Terminal nicht blockiert. Achtung: Der Tunnel bleibt somit so lange geöffnet bis ihr die Netzverbindung kappt oder den SSH Prozess abschiesst. Lasst den Befehl weg und ihr könnt mit <Ctrl>+C den Tunnel wieder schliessen user@mydomain.com Der Benutzername und den Host zu dem ihr die Verbindung herstellen wollt. -L Befehl zum erstellen des Port Tunnels <port> Lokaler Port unter welchem ihr den Zielport erreichen könnt <remote host> Host zu dem der Tunnel auf dem Server hergestellt werden soll <remote port> Port zu dem der Tunnel auf dem Server hergestellt werden soll -N Wir wollen auf dem Zielserver keinen Befehl ausführen sondern nur die Portweiterleitung aktivieren
Für PostgreSQL Server würde das ungefähr so aussehen:
$ ssh -f marcel@metawave.ch -L 5432:localhost:5432 -N
bei einem MySQL Server so:
$ ssh -f marcel@metawave.ch -L 3306:localhost:3306 -N
Nach eingeben des Passworts wird der Tunnel über SSH aufgebaut. Nun können wir auf der lokalen Maschine auf die Datenbank zugreifen als wäre sie auf der lokalen Maschine vorhanden. In der Software mit der wir auf die Datenbank zugreifen wollen geben wir nun als Host “localhost” an und der Port 5432 (wenn nicht schon vorgegeben). Mit einem gültigen Benutzernamen und Passwort können wir somit auf die Datenbank zugreifen.
Wie ihr seht ist es manchmal gar nicht nötig die Datenbank anders zu konfigurieren nur damit ihr darauf zugreifen könnt. Ein weiterer Vorteil besteht auch darin dass die gesamte Kommunikation zwischen Server und eurer Maschine komplett verschlüsselt wird. So entfällt auch eine SSL/TLS Verbindungskonfiguration wenn ihr dies bei der Datenbank Software konfigurieren wollt.