# Verbindung zu Ihrer Datenbank über einen SSH-Tunnel herstellen

Source: https://support.kapsulehost.com/de-de/database-ssh-tunnel

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.

![Database-Tab mit Verbindungsdetails in KPanel](https://support.kapsulehost.com/help/screenshots/database-ssh-tunnel.84df4ba6.webp)

## Was Sie zuerst benötigen

> **Note:** 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](https://support.kapsulehost.com/de-de/adding-ssh-keys) 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.

```sh
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.
- `-N` bedeutet, keine Shell zu starten, sondern nur den Tunnel offen zu halten.
- Fügen Sie `-i /path/to/key` hinzu, 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.

> **Tip:** 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`, Port `3306`, 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](https://support.kapsulehost.com/de-de/sites-phpmyadmin) 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:

```sh
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
```

> **Warning:** 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](https://support.kapsulehost.com/de-de/taking-a-backup), 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](https://support.kapsulehost.com/de-de/adding-ssh-keys) durch.

## Wie es weitergeht

- [Dateien mit SFTP hochladen](https://support.kapsulehost.com/de-de/sftp-access) verwendet dieselben SSH-Zugangsdaten für die Dateiübertragung.
- [phpMyAdmin verwenden](https://support.kapsulehost.com/de-de/sites-phpmyadmin) für datenbankbezogene Arbeiten im Browser.
- [Aus einem Backup wiederherstellen](https://support.kapsulehost.com/de-de/restoring-from-backup), falls eine Abfrage weiter gegangen ist, als beabsichtigt.
