Die SSH-Weiterleitung lauscht auf dem lokalen Port 13306, aber mysql verbindet sich weiterhin mit der lokalen Datenbank—oder meldet, dass sein lokaler Socket fehlt. Unter Unix kann ein MySQL-Client, dem localhost übergeben wird, einen Unix-Socket statt TCP wählen. Die Angabe eines Ports ändert diese Wahl nicht zwangsläufig.

Machen Sie bei einer bestehenden genehmigten TCP-Weiterleitung das Protokoll explizit:

mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
  --user=dbuser --password

Der Benutzername ist nur illustrativ; die Passwortoption fordert eine interaktive Eingabe an. Der Befehl verbindet sich mit dem lokalen TCP-Listener statt mit einem Unix-Socket.

Die beiden Anmeldungen getrennt halten

Eine feste SSH-Route kann diese Form haben:

ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]

Der SSH-Server des Gateways erreicht db.internal:3306. MySQL authentifiziert dann das Datenbankkonto über diesen Bytestrom. Ein akzeptierter SSH-Schlüssel gewährt keine Datenbankanmeldung, und Quellenbeschränkungen der Datenbank sehen die Verbindung von dieser Seite der Route eintreffen.

Dies ist ein fester TCP-Adapter, keine von mysql genutzte SOCKS-Einstellung. Die Anwendung benötigt keine SOCKS-Aushandlung, weil der Weiterleitungsendpunkt ein vordefiniertes Ziel hat.

Behalten Sie die beabsichtigte TLS-Identität der Datenbank und die Zertifikatsrichtlinie bei, wo sie verwendet werden. Den Socket mit Loopback zu verbinden macht ein Datenbankzertifikat nicht für einen anderen Dienstnamen gültig. Eine erfolgreiche lokale TCP-Verbindung entscheidet über die Transportwahl, nicht über die spätere Datenbankauthentifizierung oder TLS-Prüfungen.

Ähnliche Artikel