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_fqdn
ist 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.
quelle
desktop
sich hinter einem NAT-Router befindet undlaptop
sich hinter einem NAT-Router befindet.Antworten:
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.
quelle
Anstelle von ProxyCommand sollten Sie für Ihren Mittelsmann sshd.conf "gatewayports yes" setzen.
Nachdem Sie es zum Laufen gebracht haben, erfahren Sie mehr über sicherere Einstellungen von Gateway-Ports.
quelle