Wie kann auf den Port eines Reverse-SSH-Tunnels auf dem Host-Loopback-Gerät von einem Docker-Container aus zugegriffen werden?

752
couldntCareless

Ich habe die Xdebug PHP-Erweiterung in einem Docker-Container installiert, in dem der PHP-FPM meiner Entwicklungs- und Testumgebung ausgeführt wird.

Ein Debugging-Client (der eingebaute PhpStorm) überwacht Port 9000 auf meinem lokalen Windows-Computer.

Wenn ich einen SSH-Server in meinem PHP-FPM-Container installiere und PuTTY verwende, um einen umgekehrten SSH-Tunnel zu erstellen, der von einem lokalen Port innerhalb des PHP-FPM-Containers auf Port 9000 auf meinem Windows-Computer zeigt, verbindet sich Xdebug einfach mit PhpStorm.

Aus offensichtlichen Gründen möchte ich jedoch nicht, dass ein SSH-Server in meinem PHP-FPM-Container ausgeführt wird. Ich kann jedoch nicht auf den Port meines Hosts zugreifen, wenn ich den Reverse-SSH-Tunnel erstelle, der vom Host (und nicht innerhalb eines Containers) auf meinen Windows-Computer verweist.

Um dies zu testen, habe ich Telnet im Container installiert. Wenn ich Telnet außerhalb eines Containers betreibe, ist es möglich, eine Verbindung zum Port herzustellen, aber innerhalb des PHP-FPM-Containers ist der Port nicht verfügbar, auch wenn ich versuche, eine Verbindung zu 127.0.0.1 oder 172.17.0.1 (der Docker-IP meines Hosts) herzustellen ).

Ich habe gelernt, dass dies sinnvoll ist, da es nicht möglich ist, innerhalb eines Containers auf das Loopback-Gerät zuzugreifen, wenn es im Bridge-Modus ausgeführt wird. Wenn ich den Container mit "--net = host" starte, ist es möglich, eine Verbindung über 127.0.0.1 herzustellen, aber aus Sicherheitsgründen brauche ich meine Container im Bridge-Modus.

Diese Antwort schlägt vor, "GatewayPorts yes" in meinen OpenSSH-Einstellungen festzulegen, aber ich möchte meine Reverse-Ports nicht der Öffentlichkeit zugänglich machen. Wie kann ich auf den Port (und nur diesen Port - nicht das gesamte Loopback-Gerät) des Reverse-SSH-Tunnels auf dem Loopback-Gerät des Hosts vom Docker-Container aus zugreifen?

2

0 Antworten auf die Frage