Entwicklung und Datenbanken

Sichere Remote-Verbindung zum MySQL-Server

Geprüft am 4 Min. Lesezeit MySQL Fernzugriff

Eine unverschlüsselte MySQL-Remote-Verbindung kann die Zugangsdaten und die übertragenen Daten offenlegen. Ein SSH-Tunnel verschlüsselt die Strecke zwischen Ihrem Rechner und dem Server, ohne dass die IP Ihres Rechners direkt in MySQL freigegeben werden muss. Der Tunnel schließt den öffentlichen Port des verwalteten Dienstes nicht.

Diese Anleitung verwendet den SSH-Tunnel, der in den Tarifen mit SSH-Zugang verfügbar ist. Aktivieren und konfigurieren Sie den SSH-Zugang vorher mit einem Ed25519-Schlüssel, der durch eine Passphrase geschützt ist.

Verbindung über einen MySQL-Client mit SSH-Unterstützung

Unterstützt Ihr Datenbank-Client SSH, kann er den Tunnel automatisch aufbauen. Konfigurieren Sie beim Anlegen der Verbindung die Tabs für SSH und MySQL getrennt.

Geben Sie in der SSH-Konfiguration an:

  • SSH-Server: den Servernamen aus den technischen Daten des Hostings. Vermeiden Sie eine Domain hinter einem Proxy oder eine, die auf einen anderen Anbieter zeigt
  • SSH-Port: 93, sofern die Daten Ihres Dienstes keinen anderen angeben
  • SSH-Benutzer: Ihr cPanel-Benutzer
  • Authentifizierung: privater Ed25519-Schlüssel
  • Privater Schlüssel: der lokale Pfad des Schlüssels, dessen öffentlichen Teil Sie in cPanel autorisiert haben

Schützen Sie den Schlüssel mit einer Passphrase und entsperren Sie ihn über den Schlüsselagenten oder den sicheren Speicher des Clients. Speichern Sie das cPanel-Passwort nicht in der Verbindung.

Geben Sie in der MySQL-Konfiguration an:

  • MySQL-Server: 127.0.0.1
  • MySQL-Port: 3306
  • MySQL-Benutzer und -Passwort: die eines Benutzers, der auf die nötige Datenbank beschränkt ist
  • Datenbank: der vollständige, in cPanel angelegte Name

Der Client öffnet zuerst die SSH-Sitzung und verbindet sich innerhalb dieses Tunnels mit MySQL auf 127.0.0.1. Prüfen Sie vor dem Akzeptieren der ersten SSH-Verbindung den Fingerabdruck des Servers, wie in der verlinkten Anleitung beschrieben.

Den Tunnel im Terminal Ihres Rechners aufbauen

Sie können ihn auch mit OpenSSH öffnen. Dieser Befehl wird auf Ihrem Computer ausgeführt, nicht im Hosting. Ersetzen Sie Server, Benutzer und Pfad des Schlüssels:

ssh -N -T -p 93 -i ~/.ssh/id_ed25519 \
  -o ExitOnForwardFailure=yes \
  -L 127.0.0.1:13306:127.0.0.1:3306 \
  usuario_cpanel@servidor.example.com

Das Terminal bleibt geöffnet, ohne eine entfernte Shell anzuzeigen. Solange die Verbindung besteht, konfigurieren Sie Ihren MySQL-Client mit Host 127.0.0.1, Port 13306 sowie Benutzer und Passwort der Datenbank. Aktivieren Sie in diesem Fall nicht zusätzlich den integrierten Tunnel des Clients.

Der Tunnel lauscht nur auf Ihrem eigenen Rechner. Ersetzen Sie 127.0.0.1 nicht durch 0.0.0.0, sonst könnten andere Rechner im Netzwerk den Tunnel nutzen. Schließen Sie am Ende die MySQL-Verbindung und drücken Sie im Terminal des Tunnels Ctrl+C.

Wenn keine Verbindung zustande kommt

  • Address already in use: Der lokale Port 13306 ist belegt. Wählen Sie einen anderen freien lokalen Port und verwenden Sie dieselbe Nummer im MySQL-Client.
  • Permission denied (publickey): Prüfen Sie den SSH-Benutzer, den gewählten Schlüssel und ob sein öffentlicher Teil im Konto autorisiert ist.
  • Administratively prohibited: Der Server lehnt die Weiterleitung ab. Fragen Sie beim Support nach, ob dieses Konto Tunnel erlaubt; die Aktivierung von SSH bedeutet nicht, dass jede Form der Weiterleitung erlaubt ist.
  • Access denied von MySQL: Der Tunnel funktioniert möglicherweise. Prüfen Sie die MySQL-Zugangsdaten und die Zuordnung des Benutzers zur Datenbank, die unabhängig von SSH sind.
  • Fehler beim Fingerabdruck des Servers: Klären Sie die Änderung mit dem Support, bevor Sie den gespeicherten Fingerabdruck ersetzen.

Die SSH-Verschlüsselung schützt die Strecke bis zum SSH-Server. Dieses Beispiel verbindet sich von dort mit dem lokalen MySQL; wäre das Ziel ein anderer Server, müssten Sie auch diese Strecke bewerten und schützen.

Das könnte Ihnen auch helfen

Stimmt etwas nicht oder hat sich etwas geändert? Erzählen Sie es uns, und wir prüfen es.