Über einen funktionierenden SSH-Tunnel von IntelliJ aus eine Verbindung zum Port herstellen?

Über einen funktionierenden SSH-Tunnel von IntelliJ aus eine Verbindung zum Port herstellen?

Ich arbeite an einer Server-App, die auf einem Remote-Ubuntu-14.x-Server läuft. Diese App lauscht auf Port 8000 auf der Remote-Box. Ich habe eine richtige SSH-Sitzung, sodass ich in die Box getunnelt bin, und ich verfüge auch über Sudo-Fähigkeiten.

Ich habe IntelliJ auf meinem lokalen Linux-System in meinem Büro und es läuft ebenfalls unter Ubuntu 14.x. Ich muss es mit Port 8000 auf der Remote-Box verbinden, um eine IntelliJ-Remote-Debugging-Sitzung durchführen zu können. Port 8080 auf der Remote-Box ist nicht öffentlich verfügbar.

Gibt es ein Dienstprogramm, einen IP-Tabellentrick (auf der Remote-Box) oder einen SSH-Trick usw., der einen lokalen Port auf meinem System bereitstellen kann, mit dem sich IntelliJ verbinden kann, und dann den Verkehr von und zu diesem Port über den SSH-Tunnel an Port 8000 auf dem Remote-System weiterleitet? Mit anderen Worten: IntelliJ auf meiner lokalen Box denkt dann, es würde direkt mit der Server-App auf der Remote-Box kommunizieren, während die Verbindung zwischen ihnen in Wirklichkeit über den aktiven SSH-Tunnel läuft?

Ich erinnere mich, dass ich so etwas vor langer Zeit schon einmal gemacht habe, aber ich habe völlig vergessen, wie das geht. Damals war der Remote-Client eine Windows-Box, also war die Lösung für Windows-Systeme gedacht. Dieses Mal sind sowohl das lokale System als auch das Remote-System Ubuntu 14.x-Server.

Antwort1

Richten Sie einen Forward-Tunnel auf dem lokalen Computer ein.

autossh -f -N -L 0.0.0.0:8000:localhost:8000 username@remotebox

0.0.0.0:8000ist das, womit sich IntelliJ verbindet. Es geht davon aus, dass die Web-App auf der lokalen Maschine läuft, an jede lokale Schnittstelle gebunden ist und auf Port 8000 ausgeführt wird.

localhost:8000ist der Punkt, mit dem der Tunnel im Kontext der Remotebox verbunden wird. localhostist nicht mehr der Punkt, localhostan dem Sie arbeiten, sondern die localhostSchnittstelle innerhalb der Remotebox-Maschine. Dort wird er aus dem Kontext des Benutzers mit Port 8000 verbunden, was effektiv Ihre Webanwendung ist username.

autosshist ein Wrapper, sshder sich bei einem Verbindungsabbruch automatisch um die Wiederherstellung der Verbindung kümmert.

Wenn Sie auf der Remotebox einen nicht standardmäßigen Port für SSH verwenden, verwenden Sie den -P <PORT>Parameter, um eine Verbindung damit herzustellen.

Wenn das oben Gesagte nicht das gewünschte Ergebnis bringt, ist diese Antwort einen Blick wert:https://unix.stackexchange.com/a/118650/61956 von dort aus habe ich Ihnen gerade das erste Diagramm erklärt. Ich habe dem lokalen Port die Schnittstelle vorangestellt. 0.0.0.0Ich denke, es ist standardmäßig so, localhostwenn Sie es weglassen, was Sie tun können, wenn Sie möchten. Es könnte sicherer sein, den 0.0.0.0:Teil zu entfernen, denn wenn dies localhostder Standard ist, kann niemand in Ihrem Netzwerk Ihren Computer verwenden, um diesen SSH-Tunnel zu verwenden. Andernfalls wäre für sie 192.168.10.10:8000ein Einstiegspunkt zur Remote-Webanwendung, wenn 192.168.10.10dies die IP des Computers ist, an dem Sie arbeiten.

verwandte Informationen