RDP von Linux durch die ssh-Tunnelkette

2

Ich bin auf einem Linux-Laptop und versuche, auf meine Windows Workstation zuzugreifen, die sich hinter zwei (!) Linux-Servern (Server1, Server2) befindet, von denen nur Server1 von außen zugänglich ist und nur Server2 auf die Workstation zugreifen kann:

Linux -> server1 -> server2 -> windows:3389

Ich versuche, eine Remote-Desktop-Verbindung zum Windows-Computer herzustellen.

Es ist mir gelungen, einen Tunnel einzurichten, der SSH an Server 2 weiterleiten kann, indem ich auf meinem Laptop laufe:

ssh -f -N -L 2001:server2:22 server1

Und verbinden durch:

ssh -p2001 localhost

Dadurch wird ein Tunnel von meinem lokalen Port 2001 über Server 1 zu Server2: 22 erstellt. Ich habe es auch geschafft, sftp auf diesem Weg auszuführen, damit ich auf Daten auf Server2 direkt von einem Dateimanagerfenster aus zugreifen kann, anstatt von der Konsole aus

sftp://localhost:2001

in der Adresszeile.

Großartig, jetzt auf die nächste Ebene. Ich lief auf Server1:

ssh -f -N -L 2222:windows:3389 server2

Dies sollte den Port 2222 auf Server1 mit dem RDP-Port der Workstation verbinden. Sollte ich nicht in der Lage sein, meine RDP-Software (ich habe Remmima und KRDC ausprobiert) auf Server1: 2222 zu richten und damit fertig zu sein? Leider tut dies nichts (Verbindungen Timeout). Remmina hat Tunneloptionen, aber ich bin völlig verwirrt, ob sie mir in dieser Situation helfen können.

Also: Was mache ich falsch?

Zak
quelle

Antworten:

3

Sollte ich jetzt nicht in der Lage sein, meine RDP-Software (ich habe Remmina und KRDC ausprobiert) auf Server1: 2222 zu richten

Nein, ssh bindet die Portweiterleitung standardmäßig an die localhost-Schnittstelle, sodass der Port nicht "von außen" zugänglich ist.

Sie müssen eine externe Schnittstelle binden, wodurch Ihr interner Windows-Dienst für jeden verfügbar ist, der den Server1 sieht. Dies muss auch angepasst werden GatewayPorts Option in der ssh config auf Server1:

ssh -f -N -L server1:2222:windows:3389 server2

oder Sie müssen noch einmal direkt auf Ihren Computer tunneln, beispielsweise von Ihrem Computer:

ssh -fNL 2222:localhost:2222 server1

und verbinden Sie sich dann mit Ihrem localhost: 2222.

Jakuje
quelle
es funktioniert, magie! Das, was ich nicht verstanden hatte, war, dass die Art, wie ich es ausprobierte, einen öffentlichen Port erfordert, aber ich möchte keinen öffentlichen Port erstellen, aus demselben Grund, dass die Maschine überhaupt nicht dem öffentlichen Internet ausgesetzt ist ... Zwei Zeilen, die Sie zitieren, lösen das Problem
Zak