Ein SSH-Tunnel öffnet einen Port auf Ihrem Rechner, leitet ihn verschlüsselt zum Server weiter und übergibt die Verbindung dort an die Datenbank, genau so, wie Sie es von einem lokalen GUI-Tool auf Ihre Daten erwarten, ohne MySQL dem Internet auszusetzen.
Warum ein Tunnel notwendig ist
Öffnen Sie Websites, klicken Sie auf die Seite und dann auf Datenbank. Die Karte Verbindungsdetails zeigt den Host als 127.0.0.1 und den Port als 3306. Das ist kein Platzhalter: Die Datenbank akzeptiert tatsächlich nur Verbindungen von dem Rechner, auf dem sie läuft. Nichts im öffentlichen Internet kann Port 3306 erreichen, wodurch eine ganze Klasse von Angriffen wegfällt.
Ein SSH-Tunnel schließt diese Lücke sicher. Ihr SSH-Client öffnet einen Port auf Ihrem Laptop, verschlüsselt alles, was Sie dorthin senden, und übergibt es von innerhalb des Servers an die Datenbank, genau so, als hätte sich ein lokaler Prozess verbunden.

Was Sie zuerst benötigen
Ein Tunnel ist eine SSH-Verbindung, daher benötigen Sie zuerst einen für die Website registrierten SSH-Schlüssel, bevor irgendetwas davon funktioniert. Folgen Sie zuerst SSH-Schlüssel zu einer Website hinzufügen und kommen Sie dann hierher zurück.
Sammeln Sie vier Dinge:
- SSH-Host, Port und Benutzername, aus Einstellungen, dann SSH-Schlüssel, in der Karte Verbindungsdetails.
- Datenbankname, Benutzername und Passwort, aus Datenbank. Klicken Sie auf das Augensymbol, um das Passwort anzuzeigen, und auf das Kopiersymbol, um es in die Zwischenablage zu legen.
Wenn im Database-Tab No database provisioned for this site type steht, hat diese Website keine Datenbank. Statische Websites und manche Node.js-Websites werden ohne Datenbank angelegt.
Den Tunnel über ein Terminal öffnen
Das allgemeine Muster ist: einen lokalen Port zu 127.0.0.1:3306 auf der anderen Seite der SSH-Verbindung weiterleiten.
ssh -N -L 3307:127.0.0.1:3306 <ssh-username>@<ssh-host> -p <ssh-port>
-L 3307:127.0.0.1:3306öffnet Port 3307 auf Ihrem Rechner und leitet ihn an Port 3306 auf der Loopback-Schnittstelle des Servers weiter.-Nbedeutet, keine Shell zu starten, sondern nur den Tunnel offen zu halten.- Fügen Sie
-i /path/to/keyhinzu, wenn der Schlüssel für diese Website nicht Ihr Standardschlüssel ist.
Lassen Sie dieses Terminalfenster laufen. Solange es geöffnet ist, ist 127.0.0.1:3307 auf Ihrem Laptop die Datenbank der Website.
Verwenden Sie lokal 3307 statt 3306. Wenn auf Ihrem eigenen Rechner MySQL oder MariaDB installiert ist, belegt es bereits 3306, und der Tunnel kann dann nicht gebunden werden, es erscheint der Fehler „address already in use". Jeder freie lokale Port funktioniert.
Ihren Datenbank-Client auf den Tunnel ausrichten
Erstellen Sie in Ihrem GUI-Client eine einfache MySQL-Verbindung mit diesen Werten:
| Feld | Wert |
|---|---|
| Host | 127.0.0.1 |
| Port | 3307 (welchen lokalen Port auch immer Sie weitergeleitet haben) |
| Benutzer | Der Username aus dem Database-Tab |
| Passwort | Das Password aus dem Database-Tab |
| Datenbank | Der Datenbank-Name aus dem Database-Tab |
Tragen Sie den SSH-Host nicht in das Feld Host ein. Aus Sicht des Clients spricht er mit einer Datenbank auf Ihrem eigenen Rechner.
Clients mit integriertem SSH-Tab
TablePlus, Sequel Ace, DBeaver und MySQL Workbench können den Tunnel alle selbst verwalten, wodurch Sie kein Terminal offen halten müssen. Füllen Sie zwei Gruppen von Feldern aus:
- SSH-Abschnitt: Host, Port, Benutzername und Datei mit dem privaten Schlüssel von der Seite SSH-Schlüssel.
- Datenbank-Abschnitt: Host
127.0.0.1, Port3306, dazu Datenbankname, Benutzer und Passwort aus dem Database-Tab.
Wenn der Client den Tunnel aufbaut, verwenden Sie im Datenbankabschnitt 3306 statt Ihres lokal weitergeleiteten Ports. Der Client verbindet sich aus Sicht des Servers, daher sieht er den tatsächlichen Port.
phpMyAdmin stattdessen verwenden
Wenn Sie nur kurz einen Blick auf eine Tabelle werfen möchten, benötigen Sie überhaupt keinen Tunnel. Der Database-Tab enthält eine Karte phpMyAdmin mit einer Schaltfläche phpMyAdmin öffnen. Sie meldet Sie über KPanel an, sodass Sie sich kein separates Passwort merken müssen, und öffnet sich in einem neuen Tab, der bereits auf die Datenbank dieser Website zeigt.
phpMyAdmin ist die schnellere Option zum Durchsuchen, für eine einmalige Abfrage oder um einen Wert zu prüfen. Ein Desktop-Client über einen Tunnel eignet sich besser für große Exporte, Schemaarbeiten und alles, was Sie skripten möchten. Siehe phpMyAdmin verwenden für den Weg über den Browser.
Abfragen und Dumps über den Tunnel ausführen
Bei geöffnetem Tunnel funktionieren die üblichen Kommandozeilenwerkzeuge normal, ausgerichtet auf Ihren lokal weitergeleiteten Port:
mysql -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name>
mysqldump -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name> > backup.sql
Ein manueller Dump ist eine praktische Kopie, keine Backup-Strategie. Er ist nur so aktuell wie der Moment, in dem Sie ihn erstellt haben, und liegt auf dem Laptop, von dem aus Sie ihn ausgeführt haben. KapsuleHost erstellt bereits automatisch tägliche Backups der Website, die 30 Tage lang aufbewahrt werden. Siehe Ein Backup erstellen, bevor Sie sich auf eine lokale .sql-Datei verlassen.
Fehlerbehebung
„Address already in use" beim Öffnen des Tunnels. Auf Ihrem Rechner läuft bereits etwas auf diesem lokalen Port. Wählen Sie einen anderen, zum Beispiel -L 3399:127.0.0.1:3306, und ändern Sie den Port in Ihrem Client entsprechend.
„Connection refused" vom Datenbank-Client. Der Tunnel steht nicht. Prüfen Sie, ob das SSH-Terminal noch läuft und keinen Fehler ausgegeben hat, und ob der Port in Ihrem Client mit dem lokalen Port im -L-Argument übereinstimmt.
SSH verbindet sich, aber der Client läuft trotzdem in ein Timeout. Bestätigen Sie, dass Sie zu 127.0.0.1:3306 und nicht zum öffentlichen Hostnamen weitergeleitet haben. Eine Weiterleitung zum öffentlichen Namen verlangt vom Server, die Datenbank über das Internet zu erreichen, was genau das ist, was gesperrt ist.
„Access denied for user". Die SSH-Anmeldung war erfolgreich, aber die MySQL-Zugangsdaten sind falsch. Kopieren Sie Benutzername und Passwort erneut mit den Kopiersymbolen aus dem Database-Tab, statt sie neu einzutippen, und prüfen Sie, ob Sie sich mit dem richtigen Datenbanknamen verbinden.
Permission denied (publickey), noch bevor Sie überhaupt MySQL erreichen. Das betrifft die SSH-Ebene, nicht die Datenbank. Arbeiten Sie den Abschnitt zur Fehlerbehebung in SSH-Schlüssel zu einer Website hinzufügen durch.
Wie es weitergeht
- Dateien mit SFTP hochladen verwendet dieselben SSH-Zugangsdaten für die Dateiübertragung.
- phpMyAdmin verwenden für datenbankbezogene Arbeiten im Browser.
- Aus einem Backup wiederherstellen, falls eine Abfrage weiter gegangen ist, als beabsichtigt.