Remote Desktop über SSH Reverse Tunnel als Ersatz für TeamViewer

14

Ich möchte eine Remotedesktopsitzung von meinem Laptop zum Desktop über meinen SSH-Tunnel (Reverse-Tunnel) öffnen. Das sollte einfach (oder zumindest machbar) sein, oder? Bisher habe ich Team Viewer verwendet, um mich beim Remotedesktop anzumelden. Ich möchte ähnliche Ergebnisse ohne Team Viewer erzielen.

So sieht mein SSH-Tunnel aus:

laptop--->nat--->middleman<--nat<--desktop

Auf allen Rechnern läuft Linux (meistens Kubuntu 12.04 oder OpenSuse 12.3). Ich kann keine Ports ändern oder Konfigurationsänderungen an den NAT-Routern vornehmen.

Ich beschreibe meinen SSH-Tunnel, weil das Verständnis, das zur Lösung des VNC / Remote-Desktop-Problems, das den Kern meiner Frage darstellt, erforderlich erscheint. In Bezug auf dieses Bein:

middleman<--nat<--desktop

... so wird's gemacht:

autossh -M 5234 -N -f -R 1234:localhost:22 [email protected]

In Bezug auf dieses Bein:

laptop--->nat--->middleman

Ich kann mich wie folgt mit dem Vermittler verbinden:

me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman  

Eigentlich muss ich mich jedoch direkt mit dem Desktop verbinden, nicht mit dem Vermittler. Dazu benutze ich netcat ("nc") auf dem Mittelsmann. Basierend auf dieser scheint es , dass nc erforderlich ist. Also bearbeite ich meine SSH-Konfigurationsdatei auf einem Laptop, um ProxyCommand und nc zu verwenden:

me@laptop:~/.ssh$ nano config

Die Inhalte sind:

Host family_desktops
  ProxyCommand ssh middleman_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Wo middleman_fqdnist wie "middleman.com"

Dann verbinde ich mich in einem Schritt mit "desktop":

me@laptop:~$ ssh family_desktops -p 1234

(Ich habe diese Arbeit auf der Grundlage der Hilfe hier und hier und anderer verwandter Fragen, die ich gestellt habe, ausgeführt. Ich habe eine Menge Fragen zu diesem Thema gestellt, weil ich seit vielen Wochen damit ringe.)

Mit dieser SSH-Verbindung erreiche ich eine voll funktionsfähige Shell auf meinem Computer desktop. Perfekt.

Jetzt brauche ich nur noch eine VNC-ähnliche (oder TeamViewer-ähnliche) Remotedesktoplösung über diesen SSH-Tunnel. Wie?

Folgendes habe ich bisher versucht:

Zwischenhändler <- nat <- Desktop

autossh -M 5235 -N -f -R 1235:localhost:5901 [email protected]

mit dieser Verbindung hergestellt:

x11vnc -autoport 5901 

Ich beobachte, um sicherzustellen, dass es mit Port 5901 verbunden ist, was es auch tut.

Laptop ---> nat ---> Mittelsmann <- nat <- Desktop

Laptop ~ / .ssh / config:

Host family_desktops
  ProxyCommand ssh -NL 5901:localhost:1235 middleman.com nc localhost 1235
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Tunnelaufbau:

me@laptop:~$ sudo ssh family_desktops

VNC-Client:

connect to localhost:5901

Dies gibt einen Fehler von "Server nicht gefunden"

Ich habe eine Reihe von Variationen des ProxyCommand ausprobiert, von denen keine erfolgreich war. Offensichtlich rate ich, welche Parameter in ProxyCommand und welche in der SSH-Befehlszeile sein sollten. Ich kann einige potenzielle Probleme mit meinem Setup feststellen, aber ich konnte nicht herausfinden, wie alles funktionieren wird.

PS Wie bereits erwähnt, habe ich einige Fragen dazu gestellt. Einige davon führten mich näher an die Lösung heran und bildeten die Grundlage für meine gegenwärtige Frage. Andere meiner früheren Fragen zu diesem Thema zeigen nur meine Unwissenheit und Unfähigkeit, die Frage in der richtigen Form zu stellen. An diesem Punkt repräsentiert diese Frage meine beste Fähigkeit, anzugeben, was mein Problem ist und welche Lösung ich mir wünsche, aber einige meiner anderen Fragen sind noch offen. Hier ist eine , die relevant ist.

MountainX-for-Monica
quelle
1
Randnotiz: Bitte verwenden Sie nicht "hier" oder "diese" Links. Geben Sie einen aussagekräftigen Namen für Ihre Links an, z. B. den Titel der Frage oder die Webseite, auf die Sie verlinken.
Marco
Haben Sie diese Frage nicht schon einmal gestellt? unix.stackexchange.com/questions/82255/…
slm
@slm - siehe einige der Links in meiner Frage. Das sind einige meiner verwandten Fragen. Ich versuche immer noch eine Lösung zu finden und jede Frage scheint mich näher zu bringen ...
MountainX-for-Monica
Dies scheint unglaublich verworren zu sein. Ich verwende den Remotedesktop meines Windows 8-Computers per SSH-Verbindung mit einem Computer, der sich ebenfalls in demselben Netzwerk befindet, für das in der Firewall ein Port geöffnet ist.
Tim
@Tim Dies ist ein umgekehrter SSH-Tunnel, der erforderlich ist, da er desktopsich hinter einem NAT-Router befindet und laptopsich hinter einem NAT-Router befindet.
MountainX-for-Monica

Antworten:

3

Können Sie versuchen, den zweiten Schritt zu machen, ohne das NC zu machen? Das heißt - mache den VNC nur mit dem -L und -R. Ich glaube, das Problem ist, dass Ihre Netcat-Sitzung wieder eine Verbindung zu einer bereits geöffneten herstellt. Verwenden Sie Netcat also nicht, wenn Sie das VNC-Zeug machen.

prateek61
quelle
1

Anstelle von ProxyCommand sollten Sie für Ihren Mittelsmann sshd.conf "gatewayports yes" setzen.

  1. Nehmen Sie dann den Remote-Tunnel vom Desktop zum Vermittler und öffnen Sie den TCP-Port x in Vermittler und VNC auf lokal.
  2. Nehmen Sie dann den lokalen Tunnel vom Laptop zum Vermittler, öffnen Sie den VNC-Port für Ihren lokalen Host und tunneln Sie ihn zu x.
  3. Stellen Sie dann eine Verbindung zu localhost: vnc her, sodass die Verbindung über den lokalen Tunnel zum Vermittler und über den Remote-Tunnel zum Laptops-vnc hergestellt wird.

Nachdem Sie es zum Laufen gebracht haben, erfahren Sie mehr über sicherere Einstellungen von Gateway-Ports.

Limalski
quelle