GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ssh – Remote Desktop über Ssh Reverse Tunnel als Ersatz für Teamviewer?

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

So sieht mein SSH-Tunnel aus:

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

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

Ich beschreibe meinen SSH-Tunnel, weil das Verständnis notwendig erscheint, um das VNC/Remote-Desktop-Problem zu lösen, das den Kern meiner Frage darstellt. Bezüglich dieser Etappe:

middleman<--nat<--desktop

… so wird es eingerichtet:

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

Bezüglich dieser Etappe:

laptop--->nat--->middleman

Ich kann mich wie folgt mit dem Mittelsmann verbinden:

[email protected]:~$ ssh -i ~/.ssh/id_rsa [email protected]  

Was ich jedoch tatsächlich tun muss, ist, mich direkt mit dem Desktop zu verbinden, nicht mit dem Mittelsmann. Dazu verwende ich netcat („nc“) auf middleman. Auf dieser Grundlage scheint nc erforderlich zu sein. Also bearbeite ich meine SSH-Konfigurationsdatei auf dem Laptop, um ProxyCommand und nc:

zu verwenden
[email protected]:~/.ssh$ nano config

Der Inhalt ist:

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

Wobei middleman_fqdn ist wie „middleman.com“

Dann verbinde ich mich einfach in einem Schritt mit „Desktop“:

[email protected]:~$ ssh family_desktops -p 1234

(Ich habe das hier und hier und andere verwandte Fragen, die ich gestellt habe, zum Laufen gebracht. Ich habe eine Menge Fragen zu diesem Thema gestellt, weil ich viele Wochen damit gerungen habe.)

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

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

Hier ist, was ich bisher versucht habe:

Zwischenhändler<–nat<–desktop

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

mit dieser Verbindung hergestellt:

x11vnc -autoport 5901 

Ich achte darauf, dass es sich mit Port 5901 verbindet, was es auch tut.

Laptop—>nat—>Zwischenhändler<–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:

[email protected]:~$ sudo ssh family_desktops

VNC-Client:

connect to localhost:5901

Dies gibt einen Fehler „Server nicht gefunden“

aus

Ich habe eine Reihe von Variationen des ProxyCommand ausprobiert, keine davon war erfolgreich. Offensichtlich vermute ich, welche Parameter in ProxyCommand und welche in der ssh-Befehlszeile stehen sollten. Ich sehe einige potenzielle Probleme mit meinem Setup, aber ich konnte nicht herausfinden, was alles funktioniert.

Verwandte:Alle Hintergrundjobs beenden?

P.S. Wie bereits erwähnt, habe ich einige Fragen dazu gestellt. Einige davon haben mich der Lösung näher gebracht und bilden die Grundlage meiner jetzigen 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 stellt diese vorliegende Frage meine beste Fähigkeit dar, um zu sagen, was mein Problem ist und was meine gewünschte Lösung ist, aber einige meiner anderen Fragen sind auch noch offen. Hier ist eine, die relevant ist.

Akzeptierte Antwort:

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


Linux
  1. Ssh – Stdout über Ssh umleiten?

  2. Ssh – Tunnelverkehr durch eine andere Maschine über SSH?

  3. Wie kann ich HTTP über SSH über SOCKS tunneln?

  4. HTTPS-SSH-Tunnel

  5. Beschränken Sie rsync über ssh read only / nur kopieren vom entfernten Host

So verwenden Sie SSHFS zum Mounten von Remote-Verzeichnissen über SSH

SSHFS:Mounten eines Remote-Dateisystems über SSH

Remotedesktop-Fehlerbehebung

Ssh – Wie funktioniert Reverse-SSH-Tunneling?

4 Möglichkeiten zum Übertragen von Dateien zwischen Remote- und lokalen Systemen über SSH

So verwenden Sie SSHFS-Mount mit Remote-Verzeichnissen über SSH