Per Ssh-Tunnel mit Mysql-Server hinter Firewall kommunizieren

Die meisten Mysql-Server aber auch andere Backend-Dienste sind heutzutage aus gutem Grund durch Firewalls für externe Zugriffe gesperrt. Als Webdeveloper muss man aber regelmäßig von extern auf diese Servern zugreifen. Ssh-Zugang zum gesicherten Netz und Administrationsrechte auf dem Server vorausgesetzt, beschreibt dieser Artikel eine elegante Lösung auf Basis eines SSH-Tunnels, welche auch die Verwendung von graphischen Tools wie beispielsweise MySQL Workbench ermöglicht. Die Vorgehensweise bezieht sich auf Unix-Systeme und ist nicht ohne weiteres auf Windows übertragbar.

Mysql-Server konfigurieren

In der Mysql-Konfigurationsdatei sind abhängig von der verwendeten Distribution Anpassungen nötig. So muss falls vorhanden die Konfigurationsoption skip-networking auskommentiert und eine neue Zeile mit dem Inhalt bind-adress = 127.0.0.1 eingefügt werden. skip-networking hätte zur Folge, dass Mysql nur an den lokalen Sockets lauschen würde. Mit bind-adress gibt man eine IP an, an der gelauscht wird. Das Lauschen an 127.0.0.1 macht Mysql nicht unsicherer, macht den hier beschriebenen Zugriff über das Netzwerk aber erst möglich.

#skip-networking
bind-adress = 127.0.0.1

Weiter muss der Mysql-Benutzer, der im Folgenden verwendet wird, für den Zugriff von 127.0.0.1 freigeschaltet sein. Auskunft bieten die Tabellen user und host in der Datenbank mysql. Ggf. müssen die Einstellungen für den Benutzer angepasst werden. Nähere Informationen hierzu findet man im Mysql-Referenzhandbuch.

Abschließend muss der Server mittels

/etc/init.d/mysql restart

neu gestartet werden, damit die Änderungen übernommen werden.

SSH-Tunnel aufbauen

Der nötige SSH-Tunnel zum Server ist schnell per

ssh -N user@example.com -L 53306:127.0.0.1:3306

aufgebaut. In diesem Beispiel wird eine sichere Portweiterleitung vom lokalen Port 53306 auf den Port 3306 des Servers example.com eingerichtet. 3306 ist der Standard-Port des Mysql-Servers, 53306 ist ein frei gewählter nicht privilegierter Port auf dem Client.

Verbindungsaufbau mit entfernten Mysql-Server per SSH-Tunnel

Verbindungsaufbau im Mysql Query Browser

Nach erfolgreichem Verbindungsaufbau kann man sich beispielsweise per Mysql Query Browser, bzw. Mysql Workbench mit dem entfernten Mysql-Server verbinden. Als Server Hostname gibt man dabei 127.0.0.1, als Server Port den gewählten nicht privilegierten, im Beispiel 53306, an. Um den Rest kümmert sich die Portweiterleitung.

Veröffentlicht von

www.mabraham.de

Kommt noch.