Remote Desktop zum Zugriff auf vorhandene Session

tabster

Member
Registriert
4 Jan. 2008
Beiträge
599
Hallo,

auf Arbeit nutze ich Ubuntu mit dem XFCE4-Desktop mit drei Monitoren. Der Rechner ist im Prinzip immer an, wenn ich gehe, sperre ich nur die Sitzung. Ab und zu muss ich auch von zu Hause arbeiten, dort kommt auch ein XFCE4-Desktop (unter Manjaro Linux) zum Einsatz. Da möchte ich mich in die vorhandene Session einklinken. Was ich schon geschafft habe (mit xrdp, aber auch mit X2go, beides natürlich über VPN) ist, beim Verbinden eine neue XFCE-Session zu starten. Das ist aber nicht das, was ich brauche.

Mit X2go hatte ich es auch mal geschafft, in die auf dem Arbeitsplatzrechner genutzte Session einzusteigen, allerdings mit zwei Nachteilen:
1. Der Rechner ist dann auch vor Ort entsperrt, d.h. jeder der dort ist, könnte sehen was ich tue oder sogar eingreifen - das ist natürlich überhaupt nicht akzeptabel.
2. Ich bekomme die drei Monitore als eine Fläche ausgeliefert, entsprechend der Auflösungskonfiguration auf Arbeit. Zu Hause habe ich aber eine andere Monitorkonfiguration und möchte diese nutzen. Es würde im ersten Schritt ausreichen, wenn ich auf dem Client nur einen Monitor nutzen könnte. Besser wäre, wenn ich auswählen könnte, welche Monitore zum Einsatz kommen sollen.

Kennt ihr eine gute Lösung für dieses Thema? Remote-Desktop-Lösung gibts ja inzwischen massenhaft, aber meine Anforderungen sind offenbar zu speziell.
Unter Windows war es so, dass ich einen Monitor des Clients voll nutzen konnte und die vorhandenen Fenster darin angeordnet wurden. Das war genial (bis auf den Umstand, dass clientseitige Multi-Monitor-Setups nur möglich waren, wenn auf dem Host irgendeine teure Windows-7-Version installiert war).

Ich bin gespannt auf eure Tipps und hoffe, dass es eine Lösung für meine Anforderungen gibt.
 
NX wird meines Wissens nicht mehr weiter entwickelt und startet auch neue Sessions.

Ich denke die beste Lösung hier dürfte VNC sein, das geht auf die bestehende Session.
 
Danke schonmal für eure Antworten.

NoMachine habe ich probiert. Sieht professionell aus. Allerdings habe ich auch hier das Problem, dass der Rechner auch lokal entsperrt wird, wenn ich mich aus der Ferne verbinde. Das ist absolut inakzeptabel!

Teamviewer ist bestimmt keine Lösung oder hast du da Erfahrungen mit o.g. Anforderungen? Außerdem will ich nicht, dass der Traffic über einen fremden Server geleitet wird, sondern direkt.

Und bei VNC habe ich ja mindestens auch wieder das Problem mit Auflösungsunterschieden, oder?
 
Ich hatte eine ähnliche Konstellation vor einiger Zeit bei einem Kollegen eingerichtet, ebenfalls mit xrdp. Auch hier bestand die Problematik, dass immer eine neue Session eröffnet wurde. Ich glaube mit der Lösung in diesem Thread konnte das Verhalten dann dahingehend ändern, dass die vorhandene Sitzung wieder aufgenommen wird.
 
Bei VNC entsperrst du genauso lokal. Alle Lösungen die nur deinen Bildschirm "filmen und umleiten" würden dies tun.
Kannst du die Anzahl der zulässigen Sitzungen nicht auf 1 begrenzen bzw. beim Starten der Verbindung die entsprechende Sitzung wählen?

Deine Monitorauflösung ist leider immer ein Problem - du startest ja quasi X in einem gewissen Kontext (drei Monitore) - weniger Monitore oder andere Auflöungen würden einen X-Restart = neue Sitzung bedingen *grübels*
 
Weißt du, wo ich die Anzahl der Sitzungen auf 1 begrenzen kann? Habe dazu bisher keine Einstellmöglichkeit gefunden.

Das Thema Monitorauflösung scheint generell sehr problematisch zu sein. Ich frage mich nur, warum das Problem sonst niemand hat. Mit Windows Remote Desktop ist genau das völlig unproblematisch umsetzbar.

Wenn ich in den Einstellungen die Auflösung lokal ändere, dann werden doch die gestarteten Programme auch offen gehalten, nur eventuell neu angeordnet. Das ist meines Erachtens keine neue Sitzung. Oder übersehe ich da etwas?
 
Die Art und Weise, wie Windows und Linux den Bildschirm anzeigen, ist absolut nicht vergleichbar, daher gibt's auch keine direkt vergleichbaren Fernzugriffsmöglichkeiten.
 
Okay, mir geht es auch nicht um eine 1:1-Umsetzung von Windows Remote Desktop. Jetzt ist das Problem, dass ich überhaupt nicht sinnvoll aus der Ferne zugreifen kann, weil die Programme, die in der einen Sitzung laufen nicht noch ein weiteres Mal gestartet werden können (z.B. Firefox). D.h. ich müsste den Firefox dann killen, was auch nicht toll ist. Oder generell immer die Programme schließen, das ist aber auch eher ungünstig.
 
Meine Lösung

Also ich habe ziemlich ähnliche Anforderungen und beschreibe zunächst mal, welche Lösungsansätze ich kenne (aber nicht unbedingt ausprobiert habe) und wie meine Lösung letztendlich aussieht.

Zunächst einmal muss ich oben getroffene Aussagen zu NX mal präzisieren: Es gibt von Nomachine NX mehrere Versionen: Die Version 3.5 und die Version 4. 3.5 war quelloffen und wird von Nomachine nicht mehr weiterentwickelt und auch nicht mehr angeboten (bzw. nur noch für Bestandskunden). Das ist aber nicht so schlimm, denn das x2go-Projekt pflegt den Code weiter. Ebenso gibt es FreeNX,welches einen freien Ersatz für den Nomachine 3.5-Server darstellt. Als Client kann man hier den Original-Client der Version 3.5 von Nomachine einsetzen (so man ihn denn noch irgendwo auftreiben kann) oder die freie Variante OpenNX. Von der 4er-Version gibt es zwar keine Quellen, aber eine "free-for-everyone"-Version (ob man die - wie in deinem Fall - kommerziell einsetzen darf, entzieht sich meiner Kenntnis).

Ansatz a) NX bietet einen sogenannten "Shadow"-Modus an, mit dem man auf eine vorhandene lokale Sitzung zugreifen kann. Leider kann NX dann nicht sein volles Potential ausschöpfen und ist deutlich langsamer als in einer vollständigen NX-Sitzung.

Ansatz b) xpra trifft auf der Homepage die Aussage "It also allows you to display existing desktop sessions remotely." Hab ich aber nicht getestet.

Ansatz c) x11vnc kann an einen vorhanden X-Server andocken und diesen per VNC-Protokoll bereitstellen. Ich verwende das gelegentlich bei der Arbeit und für kleine Sachen reicht es aus.

Ansatz d) HP RGS. Das kann den Bildschirm des Arbeitsplatzrechner abschalten. Aber erstens ist die Software kommerziell und zweitens tut das Abschalten nur auf HP-Rechnern. Wir verwenden das beim Kunden. Als zusätzlichen Vorteil hat HPRGS eine OpenGL-Unterstützung.

Ansatz e) (der von mir gewählte): Anstatt an meinem Arbeitsplatzrechner eine direkte lokale Sitzung aufzubauen verbinde ich mich beim Anmelden bereits mittels NX an meinen eigenen Rechner. Ich arbeite also IMMER in einer NX-Sitzung, egal ob in der Firma, beim Kunden oder zuhause. Diese Sitzung kann ich dann von irgendwoanders übernehmen. In diesem Moment ist von der Sitzung am Arbeitsplatzrechner nichts mehr zu sehen. Der Rechner, von dem ich die Verbindung aufbaue, teilt dem Arbeitsplatzrechner mit, welche Auflösung sein X-Display hat und dank xrandr- und xinerama Support in NX wird der Arbeitsdesktop dann passend zum jeweiligen Client resizet. Es funktioniert recht zuverlässig, manchmal schießt man sich allerdings mit dem Resizen in den Fuß, ich bin mir aber nicht sicher, welche Komponente hier das Problem ist. Der Pferdefuß an der ganzen Sache: Ich verwende dafür ein eigenes Skript, welches ich nicht veröffentlichen kann. Das heißt, du müsstest die Lösung nachbauen. Mit den verfügbaren NX-Servern und Clients habe ich die Lösung nie ausprobiert, will aber nicht ausschließen, dass sie funktioniert.

Uli
 
Zuletzt bearbeitet:
Hallo uli42,

das klingt sehr interessant. An so etwas hatte ich heute auch schonmal gedacht. Du sagst, dass du ein eigenes Skript nutzt. Auch wenn du das nicht veröffentlichen kannst, kannst du vielleicht kurz etwas zu den verwendeten Komponenten sagen. Du sprichst nur von NX. Welchen Server/Client hast du da in Verwendung oder hast du einen vorhandenen freien modifiziert?

Danke
tabster
 
Hallo uli42,

das klingt sehr interessant. An so etwas hatte ich heute auch schonmal gedacht. Du sagst, dass du ein eigenes Skript nutzt. Auch wenn du das nicht veröffentlichen kannst, kannst du vielleicht kurz etwas zu den verwendeten Komponenten sagen. Du sprichst nur von NX. Welchen Server/Client hast du da in Verwendung oder hast du einen vorhandenen freien modifiziert?

Ich verwende zwar selbstkompilierte NX-Bibliotheken, aber das Skript kann mit den bei x2go mitgelieferten Libs und Binaries arbeiten (und auch mit denen, die Nomachine damals ausgeliefert hat). Das Skript startet den nxagent und verbindet den nx-proxy dann mit diesem Agent. Und macht halt alles andere, was drumherum nötig ist, um Verbindungen zu handeln und nx entsprechend zu konfigurieren.

Ich denke, es müsste eigentlich ausreichen, einen X2go-Server aufzusetzen und dann im XDM/KDM/GDM/lightdm/wasuachimmer eine benutzerdefinierte Sessions auszuwählen. Dann wird üblicherweise .xsession im Home ausgeführt. Dort startest du dann den x2go-Client und verbindest nach localhost.

Uli
 
Danke für deine Ausführungen. Ich werde mich mal daran versuchen. Arbeitest du da auch mit mehreren Monitoren? Und werden die auch als einzelne Monitore interpretiert, z.B. beim Maximieren eines Fensters? Das wäre echt genial.
 
Ich hab das eben mal mit x2go unter Ubuntu 14.04 ausprobiert. Das muss man nur die x2go-Pakete installieren, den lightdm um eine custom-Session erweitern (http://askubuntu.com/questions/77191/how-can-i-use-lightdm-for-user-defined-sessions) und dann in ~/.xsession das hier eintragen: x2goclient --thinclient --session=meinesession Zuvor natuerlich im x2goclient einmal eine passende Session namens "meinesession" einrichten: vollbild, Zielrechner: der eigene, Typ: was immer du magst. Bezueglich Monitoren gehe ich bei meiner Loesung so vor: Ich ermittle beim vor dem Start der NX-Session und beim Wiederverbinden die Aufteilung des X-Displays des Clients (Anzahl Monitore und deren relative Position zueinander per xinerama, xdyinfo -ext XINERAMA) und reiche diese Informationen 1:1 an die Session durch. Innerhalb der Session wird allen Anwendungen per LD_PRELOAD die libfakexinerama vorgeladen, welche dann auf die uebermittelte Information zugreift. x2go hat das eingebaut, da sollte es ohne libfakexinerama gehen. Uli
 
Das klingt schonmal gut. Mit xdpyinfo bekomme ich die Auflösungen und Positionen der Bildschirme, aber wie kann ich die an x2go übergeben? Dort gibts nur die Xinerama-Option als Haken (oder Kommandozeilen-Option), aber ich fand keine Möglichkeit, die Konfiguration zu übergeben.
 
Das klingt schonmal gut. Mit xdpyinfo bekomme ich die Auflösungen und Positionen der Bildschirme, aber wie kann ich die an x2go übergeben? Dort gibts nur die Xinerama-Option als Haken (oder Kommandozeilen-Option), aber ich fand keine Möglichkeit, die Konfiguration zu übergeben.

Nach meinem Verständnis sollte das automatisch funktionieren. Aber ich habe den Verdacht, dass der x2go-Client aktuell an der Stelle buggy ist, denn der sollte eigentlich über die SSH-Verbindung auf der Server-Seite eine Datei namens ~/.x2go/C-.../xinerama.conf anlegen. Tut er aber nicht. Ausserdem fehlt auf der Serverseite die Umgebungsvariable, die auf diese Datei zeigen sollte.

Update: Hab mich vertan, die Variable war gesetzt, aber die Datei wurde nicth angelegt. Bei mir lag das daran, dass ich Ubuntu verwende und dort der neuste Client die Version 4.0.3 trägt, der Bug mit der xinerama.conf aber erst in 4.0.4 gefixt ist. Nachdem ich diese Version kompiliert hatte, ging es auch.

Uli
 
Zuletzt bearbeitet:
Meine Antwort kommt spät, aber ich möchte trotzdem nochmal reagieren:
Nachdem das erstmal nicht richtig funktionierte und mangels Zeit und Umsetzungsdruck in den Hintergrund geriet, bin ich das Thema diese Woche nochmal angegangen. Und siehe da: Es läuft sehr gut mit x2go. Man muss nur wirklich die aktuellste Version des Clients nehmen (momentan 4.0.5). In Ubuntu ist standardmäßig eine ältere dabei, man kann aber über
Code:
sudo add-apt-repository ppa:x2go/ppa
auch die jeweils aktuellste Version erhalten.

Im Client wählt man dann Vollbild und Xinerama-Unterstützung. x2go erstellt dann automatisch (wie von uli42 beschrieben) eine xinerama.conf auf dem Zielsystem. Die ist bei mir erstmal nicht optimal, weil zwar die Auflösungen der Monitore korrekt übertragen werden, nicht aber die Anordnung. Ich habe das jetzt erstmal so gelöst, dass ich auf dem Zielsystem je eine xinerama.conf.work und xinerama.conf.home usw. angelegt habe. Die kopiere ich dann nach dem Verbindungsaufbau einfach auf die xinerama.conf und gehe mit Strg+Alt+F in den Vollbildmodus. Dann wird diese Konfiguration genutzt. Das Format der Datei ist extrem simpel und sollte sich aus der vorhandenen Datei erschließen.

Ich müsste jetzt nur noch versuchen, die Monitorkonfiguration automatisch zu ermitteln und dann in die entfernte xinerama.conf zu übertragen. So gehts aber erstmal auch und ist ausreichend komfortabel.

Auf dem Arbeitsrechner starte ich also nur den x2go-Client und verbinde mich auf die vorhandene Session, genauso von unterwegs/zu Hause. Wichtig ist nur, dass man dann beim Verlassen des Arbeitsrechners immer den Vollbildmodus mit Strg+Alt+F verlässt und in der lokalen Session den Bildschirm sperrt. Man kann das auch in der entfernten Session machen, könnte dann aber trotzdem über das Verlassen des Vollbildmodus Zugriff auf den Rechner bekommen.

Herzlichen Dank für deine Ausführungen, uli42
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben