Tunneln der Datenbankverbindung

Um auch von zu Hause aus auf die SEP-Datenbank zugreifen zu können, ist es notwendig einen SSH-Tunnel aufzubauen. Der DB-Server bueno.fim.uni-passau bzw. dess PostgresSQL DB ist nur innerhalb des Uni-Netzes inkl. vom CIP-Pool aus direkt erreichbar.

Es gibt auf bueno keine Betriebssystem Accounts, d.h. man kann sich auf diesem Rechner nicht z.B. per ssh einloggen. Aber man kann sich auf einem CIP-Pool Rechner (bender.fim.uni-passau.de oder fry.fim.uni-passau.de) per ssh einloggen bzw. auf einem dieser beiden Rechner eine Portweiterleitung einrichten. Mit dem OpenSSH-Paket (unter jeder Linux Distribution und MacOS X verfügbar) funktioniert das folgendermaßen:

sauron> ssh -L 12345:bueno.fim.uni-passau.de:5432 cipname@bender.fim.uni-passau.de
Danach ist der PostgreSQL Port 12345 am lokalen Rechner verfügbar. D.h. man kann ihn nun so benutzen, als ob die DB am lokalen Rechner installiert wäre. Der Connection-String für JDBC ist dann
jdbc:postgresql://localhost:12345/cipname
anstatt wie gewohnt
jdbc:postgresql://bueno.fim.uni-passau.de:5432/cipname

Der Tunnel bleibt nur solange bestehen, bis die Sitzung / das Fenster / die Shell geschlossen wird.

Falls zu Hause schon eine PostgreSQL Datenbank installiert ist, oder der Port 12345 durch ein anderes Programm bereits belegt ist, kann man lokal auch einen anderen Port > 1024 benutzen. Dazu einfach die 12345 im Aufruf (die Portnummer des lokalen Endes des Tunnels) und im Connection-String ersetzen. Es ist übrigens durch den Tunnel bei einer evtl. vorhandenen Firwall keine Portöffnung von außen notwendig.

Unter Windows empfiehlt sich der kostenlose SSH Client PuTTY, mit dem man einen solchen Tunnel über eine GUI einrichten kann.

Um den SSH-Tunnel mit Putty zu erstellen sind folgende Schritte notwendig:

  1. Den Tunnel einrichten (Connection->SSH->Tunnels).
    Unter Source port ist der lokale Port einzutragen d.h. irgenein freier Port am eigenen Rechner. Unter Destination ist die Zieladresse des Tunnels inklusive Port einzutragen.

  2. Tunnel mit "Add" hinzufügen.

  3. Verbindungen zu einem Rechner aufbauen, der Zugriff auf den Zielrechner hat z.B. einer der CIP- Rechner.

  4. In der Applikation als Host der Datenbank einfach "localhost:Source port". Der Source port muss mit dem Source port aus Schritt 1 übereinstimmen.