Frage Wie richte ich einen SSH-Tunnel ein, um Serverdaten von einer IP auf der weißen Liste in einen lokalen Build zu leiten?


Es ist möglich, dass dies beantwortet wurde und meine Schwäche verhindert, dass ich die Antworten verstehe ...

Ich arbeite remote. Ich habe einen lokalen Build, den ich auf 127.0.0.1:8080 ausführe. Dieser Build muss Daten von einer fernen Datenbank abrufen. Die Remote-DB erlaubt nur bestimmten IPs eine Verbindung herzustellen. Ich habe einen anderen Server, der auf die weiße Liste gesetzt wird. Also muss ich einen Tunnel zu meinem Whitelist-Server einrichten, um die DB-Daten zu erhalten, und diese Daten an meinen lokalen Build zurücksenden.

Ich kann einen Tunnel einrichten, so dass mein gesamter Webverkehr über meinen Whitelist-Server läuft, aber dann kann ich nicht mehr auf meinen lokalen Build zugreifen. Oder ich kann meinen lokalen Build ausführen, aber ich kann ihn nicht verwenden, weil er denkt, dass der Server nicht verbunden ist.

Ich bin mit dem Terminal vertraut. Ich bin mir nicht sicher, wie ich es einrichten soll, damit ich nur die Serverinformationen zurückbekomme (und diese mit meinem lokalen Build verbinde) und nicht den gesamten Web-Datenverkehr.


2
2017-07-29 02:44


Ursprung




Antworten:


Ich kann Ihnen helfen, Ihren lokalen Build (Server-Software-Anwendung?) Mit einem lokalen Port zu verbinden, der ein Tunnel zu Ihrem Datenbankserver ist.

Sie sollten sich über den Port 8080 mit Ihrem Localbuild verbinden können, während sich Ihre Server-Software-Anwendung mit dem Datenbankserver verbindet, der über den Whitelist-Server über einen SSH-Tunnel erreichbar ist.

Wenn das ist, was Sie wollen, kann ich Ihnen mit folgenden helfen ...

Ich nehme an, Sie können über SSH von Ihrem lokalen Build zu Ihrem Whitelist-Server verbinden und Sie können Ihre Datenbankverbindung in Ihrem lokalen Build konfigurieren.

  1. Stellen Sie eine Verbindung zu Ihrem Server auf der weißen Liste her
  2. Konfigurieren Sie einen Tunnel vom Whitelist-Server zum Datenbankserver
  3. Konfigurieren Sie Ihren lokalen Build, um eine Verbindung zu 'localhost' herzustellen

Schritt 1. + 2. kann in einem CLI Befehl gemacht werden:

ssh -L <any-number-gt-1024>:<database-server-ip>:<database-server-port> <your-username>@<whitelisted-server>

Beispiel: 

Für einen PostgreSQL-Datenbankserver, der Verbindungen an Port 5432 mit IP 192.168.1.20 und den Whitelist-Server mit der IP 192.168.1.30 akzeptiert, können Sie den Tunnel wie folgt konfigurieren:

ssh -L 1155:192.168.1.20:5432 heino@192.168.1.30

Wenn diese SSH-Verbindung hergestellt ist, haben Sie einen Tunnel von Ihrem localbuild (von dem aus die ssh-Verbindung initialisiert wird) zum Server über den Server auf der weißen Liste. Sie können mit der Datenbank sprechen, indem Sie eine Verbindung zu 'localhost: 1155' herstellen

telnet localhost 1155

Jetzt können Sie Ihren localbuild so konfigurieren, dass er sich mit Port 1155 verbindet, um eine Verbindung zum Datenbankserver herzustellen.

Erkundung

Sie stellen eine Verbindung zu Ihrem Server auf der weißen Liste her

ssh heino@192.168.1.30

Um einen Tunnel zu konfigurieren, der auf localhost erreichbar ist (das ist der Parameter -L) und über einen Server auf der weißen Liste mit dem Datenbankserver verbindet, müssen Sie den Namen / ip und den Port angeben, über den der Datenbankserver vom Whitelist-Server erreicht werden kann in den Parametern für die ssh connect. Dies funktioniert auch mit DNS-Namen oder / etc / hosts-Einträgen.

-L 1155:<DB-Server>:<DB-Port>

PostgreSQL hören standardmäßig auf Port 5432. MySQL: 3306 ...

Schritt 3:

Konfigurieren Sie Ihre Server-Software-App so, dass sie sich mit localhost: 1155 (oder einem von Ihnen gewählten Port) verbindet und verwenden Sie den db-login-account von Ihrem Server auf der weißen Liste.

Anmerkungen

  • Sie sollten einen Port auf dem lokalen Host verwenden, der nicht verwendet wird. Aber du solltest von ssh gewarnt werden, wenn der Port bereits benutzt wird.
  • achte auf deine sql-Befehle, die du an die DB sendest (z. B. DROP und TRUNCATE). Sie senden diese Befehle nicht an Ihre localhost db, sondern an den Datenbankserver, den Sie über den ssh tunnel erreichen! Dies ist nicht Ihre lokale Build-Datenbank, wenn der Tunnel betriebsbereit ist.
  • Dieses Tunnel-Setup funktioniert auch mit allen anderen erreichbaren Ports. Nützlich für Localhost-Only-Listening Tomcat-Admin-Manager-App usw.

0
2017-07-30 08:17



Danke, Heino. Ich werde keine Chance haben, das für ein oder zwei Tage zu versuchen, aber ich lese es durch, logisch ergibt es sich jedenfalls logisch. Wir werden sehen, auf welche Probleme ich stoße. - Thomas
Es hat so lange gedauert, bis du deine Antwort angenommen hast. Ich habe den Account erstellt, nur um diese Frage zu stellen, und als ich es ausprobieren konnte, konnte ich nicht mehr herausfinden, wie ich mich wieder einloggen kann. Diese Sache mit mehreren Accounts auf den verschiedenen * Tauschbörsen ist verrückt. - Thomas