Auf Server A läuft ein MySQL oder MariaDB Server. Die Ports des Servers A sind nach außen nicht geöffnet bzw. nicht erreichbar. Server B muss aber eine Verbindung aufbauen und auf die Datenbanken Zugriff haben. Es besteht natürlich die Möglichkeit die IP von Server B in der Firewall von Server A zu whitelisten. Ist Server B aber zum Beispiel ein Gerät mit dynamischer IP (also zuhause) wird dies schon schwieriger.
Lösung
Wir tunneln die MySQL Verbindung von Server A zu Server B und erlauben dem User ausschließlich einen Tunnel aufzubauen und den MySQL Port zu benutzen.
Vorbereitung
Wir installieren autossh und legen den Benutzer an. Autossh kümmert sich später darum, den Tunnel aufrecht zu erhalten.
[auf Server B]: apt install autossh [auf Server A]: adduser sshtunnel
AutoSSH Parameter (Server B)
autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -N -L 3307:127.0.0.1:3306 user@host -i ./ssh-key
/etc/sshd/sshd_config auf Server A
Match User sshtunnel #AllowTcpForwarding yes #X11Forwarding no #PermitTunnel no #GatewayPorts no AllowAgentForwarding no PermitOpen 127.0.0.1:3306 ForceCommand echo 'This account can only be used for [reason]' AllowUsers sshtunnel
Wie stabil diese Lösung ist und ob es in produktiven Umgebungen eingesetzt werden kann, kann ich nicht beurteilen. In meinem Anwendungszweck funktioniert es zuverlässig.
Schreibe einen Kommentar