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“
ausIch 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.