TRENZ : SSH Tunneling (Beispiel: Datenbankzugriffe)

Sollte mal ein direkter Zugriff auf bestimmte Ressourcen im Netzwerk nicht möglich sein, könnte ein SSH-Tunnel (bzw. ein Forwarder) möglicherweise das Problem lösen.

Ein Beispiel:
Der Homeclient befindet sich außerhalb des Firmennetzwerks. Er stellt eine VPN-Verbindung zum Firmennetzwerk her und möchte eine Verbindung zum Datenbankserver aufbauen. Die Verbindung schlägt fehl, weil der Datenbankserver sich in einem anderen Netzwerk befindet. Die Gründe für den Fehlschlag können vielfältig sein und sollen hier nicht erörtert werden. Es gibt jedoch einen anderen Server oder Client im Firmennetzwerk, auf dem ein SSH-Server eingerichtet ist und auf den der Homeclient zugreifen kann. Weiterhin kann von der Maschine mit dem SSH-Server eine Verbindung zu dem Datenbankserver aufgebaut werden.
Der Homeclient verbindet sich mit dem SSH-Server und richtet dort ein SSH-Tunnel ein, mit einem lokalen ForwardPort und der Adresse zum gewünschten Datenbankserver. Wenn der Homeclient nun Datenpakete an seinen ForwardPort schickt, werden diese über den SSH-Port (TCP 22) zum SSH-Server und von dort an den Datenbankserver weitergeleitet. Gleichfalls werden die Antworten des Datenbankservers wieder an den Homeclient gesendet.

Homeclient <> SSH-Server <> Datenbankserver

Einrichten eines SSH-Tunnels mit Putty Step-by-step

Putty ist eine freie OpenSource Applikation. Die aktuellste Version findet ihr unter http://www.putty.org/. Putty kann sowohl über GUI als auch über eine Konsole bedient werden. Dieser Step-by-step guide konzentriert sich auf die GUI.

Voraussetzungen:
  • Es wird angenommen, dass der SSH-Server (derzeit idefix.trenz.local) bereits eingerichtet und konfiguriert ist und dass der TCP Port 22 nicht blockiert wird.
  • Gegebenenfalls wird ein gesonderter Account (nicht Domain-Account) benötigt, um eine SSH-Session aufbauen zu können. Wendet euch bitte an Sören Kuklau oder Frank Kuchta, wenn ihr einen SSH-Account braucht.
  • Auf dem Client, von dem der Tunnel aufgebaut wird, ist Windows installiert.
Step-by-step:
  1. Startet Putty. Ihr findet Putty auch unter P:\Putty\putty.exe. Erstellt für euch ggf. irgendwo eine Verknüpfung oder heftet Putty an die Taskleiste.


  2. Belasst alles wie es ist und gebt den SSH-Host ein, mit dem ihr euch verbinden wollt. Mann kann einfach nur den Host eingeben oder den Host mit dem Benutzernamen in de Form benutzer@host.


  3. Wechselt zu den Tunnel-Optionen


  4. In den Tunnel-Optionen gebt ihr nun den ForwardPort (Source port) und das gewünschte Ziel (Destination) samt Port an, in diesem Fall die Verbindungsdaten zum Datenbankserver. 

    Der bei Source port eingegebene Port wird lokal bzw. auf eurem Client reserviert. Wählt eine Zahl zwischen 1024 und 65535 aus. Mit dem Befehl netstat -a könnt ihr die in eurem System gerade belegten Ports einsehen.
    Stellt auch sicher, dass "Local ports accept conn..." angehakt ist. Damit ermöglicht ihr dem SSH-Host (bzw. jedem beliebigen Host) eine Verbindung zu eurem Client aufzubauen.
    Es können mehrere Tunnel pro Session eingerichtet werden.

    Der TCP Port einer SQL-Standardinstanz lautet 1433, welcher aber auch geändert werden kann. Wendet euch an Sören Kuklau oder Frank Kuchta, falls es mit dem Standardport nicht klappt.

  5. Geht wieder zurück zu den Session-Optionen und speichert die Session unter einem sprechenden Namen.

    Mit einem Doppelklick auf die entsprechende Session startet ihr die Verbindung.

  6. Akzeptiert den Fingerprint und gebt euer Passwort ein.


    Während der Passworteingabe werden keine Zeichen (wie z.B. Sternchen) erzeugt, dennoch werden die Eingaben registriert.

    Der/die SSH-Tunnel bleiben solange bestehen, bis die Session geschlossen wird.

     

  7. Mit netstat -a könnt ihr euch vergewissern, dass euer Client nun auf dem angegebenen Port lauscht.


  8. [optional] Gegebenenfalls kann mit TCPing (http://www.elifulkerson.com/projects/tcping.php) überprüft werden, ob der Tunnel aktiv ist.