Wie stellt man von einem lokalen Computer aus eine Verbindung zu DB im privaten Netzwerk her?

Wie stellt man von einem lokalen Computer aus eine Verbindung zu DB im privaten Netzwerk her?

Derzeit habe ich ein Docker-Image, auf dem Alpine Linux in einem privaten Netzwerk läuft. Ich habe Root-Zugriff auf dieses Docker-Image.

Im selben privaten Netzwerk befindet sich eine Datenbankinstanz. Nur Systeme im selben Netzwerk können auf die Datenbank zugreifen (Beispiel: das oben erwähnte Docker-Image).

Um Dinge innerhalb der Datenbank zu debuggen, musste ich mich per SSH mit dem Docker-Image verbinden und dann Befehlszeilentools innerhalb dieses Docker-Images ausführen. Das ist ziemlich kompliziert

Gibt es eine Möglichkeit für mich, mich mit dieser Datenbank zu verbinden, indem ich stattdessen Entwicklungstools auf meinem lokalen PC verwende? Ich bin nicht sicher, ob der Begriff dafür Port-Forward oder Proxying ist.

Antwort1

Ich gehe davon aus, dass die Verbindung folgendermaßen hergestellt wird:

ssh user@docker

Du brauchst -L:

ssh -L port1:server:port2 user@docker

wobei server:port2die Adresse und der Port der Datenbank aus Sicht des Docker-Containers sind (diese Adresse wird aufgelöstDort).

Ihr lokales Gerät sshhört lokal auf dem TCP-Port port1. Sie wählen den Port.

Stellen Sie nun vom lokalen Computer aus eine Verbindung zu localhost:port1(oder 127.0.0.1:port1) her, und die Verbindung wird server:port2von erreicht docker. Der serverComputer erkennt, dass sie von kommt docker. Dies wird als „lokale Portweiterleitung“ bezeichnet.

Auf diese Weise kann ein lokales Tool auf die Remote-Datenbank zugreifen. Das Tool muss eine Verbindung zu herstellen localhost:port1.

Anmerkungen:

  • Dies funktioniert nur für TCP,nicht UDP.
  • Andere Rechner in Ihrem lokalen Netzwerk können Ihren lokalen Computer nicht als Relay verwenden, um die Datenbank zu erreichen. Das ist wahrscheinlich Ihr Wunsch. Wenn nicht, überprüfen Sie diese Frage:Kann ich SSH verwenden, um eine getunnelte Ressource in einem lokalen Netzwerk bereitzustellen?
  • ssh -N …Zum Erstellen eines Tunnels verwendenohne Ausführung eines Remote-Befehls.
  • Verwenden Sie autosshdies, um dies zu automatisieren.
  • Ports mit Nummern unter 1024 sind privilegiert. Als normaler Benutzer können Sie sich nicht an einen solchen Port binden. Wählen Sie port1entsprechend.
  • Die Einstellung AllowTcpForwardingauf sshd_configdem SSH-Server ( dockerin Ihrem Fall) kann verwendet werden, um die Portweiterleitung zu untersagen. Die Standardeinstellung ist „Zulassen“, daher wird es wahrscheinlich sofort funktionieren.

verwandte Informationen