SSH-Tunnel & MySQL

Kurt Klinner

Immer mal wieder kommt es vor, daß man auf firewalltechnisch geschützte Dienste
eines Remote-Servers zugreifen muß (wie in diesem konkreten Fall einen MySQL Server).

Einen funktionierenden SSH-Zugang zu einem Rechner innerhalb des gesicherten Netzes (von dem man auf den eigentlichen Ziel-Server zugreifen kann) vorausgesetzt, beschreibt dieser Artikel eine Lösung auf Basis eines SSH-Tunnels.

$ ssh -L lokalerport:zielrechner:zielport login@gatewayrechner

erzeugt nach erfolgreicher Anmeldung auf dem dem "gatewayrechner" einen Tunnel.
Alle Requests die auf dem lokalen Rechner an den Port "lokalerport" gerichtet werden,
werden nun über das Gateway zum Zielrechner an den Zielport geleitet.

In einem etwas konkreteren Beispiel leiten wir alle lokalen Anfragen an den Port 3307
über den Gatewayserver namens gateway.mobux.de (der zu dem wir ssh Zugang haben und der sich im selben Netz
wie der MySQL Server befindet) an den Default-Port 3306 des MySQL Servers (mysql.mobux.de) weiter

$ ssh -L 3307:mysql.mobux.de:3306 mysqlssh@gateway.mobux.de

Der Tunnel bleibt bis zu einem expliziten Abmelden bzw. Abschiessens der SSH Verbindung etabliert.

Soll die Verbindung dauerhaft aufrecht erhalten bleiben, empfiehlt sich der Einsatz eines Tools namens autossh
(http://www.harding.motd.ca/autossh/), welches sich unter Ubuntu & Co. direkt via apt installieren
lässt

apt-get install autossh

Autossh prüft durchgängig ob die SSH Verbindung noch existiert und baut falls nötig die selbige wieder auf.

autossh -2 -fN -M 20000 -L 3307:mysql.mobux.de:3306 mysqlssh@gateway.mobux.de
  • "-2" veranlasst autossh das nur Verbindungen via SSH Protokollversion 2 aufgebaut werden.
  • "-f" schickt autossh in einen Hintergrund. D.h. es erfolgt keine Ausgabe im Terminal. Dies setzt voraus, dass SSH-Keys zur Authentifizierung hinterlegt wurden, da autossh keine Passworteingabe verarbeiten kann.
  • "-M" spezifiziert den Monitoringport. über diesen (bis dahin noch freien) Port sendet der Client Testdaten an den Server, um den Tunnel permanent zu testen.
Viel Spaß beim Tunneln :-)