Führen Sie die Anwendung auf dem lokalen Computer aus und zeigen Sie die GUI auf dem Remote-Bildschirm an

35

Ist es möglich, eine Anwendung auf meinem lokalen Desktop auszuführen und die GUI auf meinem Laptop (Remote X) anzuzeigen?

Ich frage mich, ob es möglich ist, ein Dual-Monitor-Setup mit zwei verschiedenen LAN-Computern zu emulieren.

Ich habe Synergy installiert und kann meinen Laptop problemlos mit der Desktop-Tastatur / Maus steuern. Ich möchte jedoch auch einfach etwas auf dem Desktop ausführen und die GUI auf dem Laptop-Bildschirm anzeigen.

Aufgrund meiner begrenzten Erfahrung mit X weiß ich, dass ich ein Programm auf einem Remotecomputer ausführen und die Anzeige der ersten verwenden kann, um die Ausgabe anzuzeigen, aber nicht umgekehrt.

Alle Hinweise wären von großer Hilfe. Vielen Dank

PS Läuft XFCE 4.10 auf Ubuntu 12.10

Vlad Balmos
quelle

Antworten:

39

Variante A - X Windows auf ein anderes DISPLAY schießen:

  1. Stellen Sie sicher, dass der Xserver auf Ihrem Laptop TCP-Verbindungen abhört. Leider ist X11-Networking in den meisten Distributionen standardmäßig deaktiviert. Da der Xserver von Ihrem Display Manager (gdm, lightdm) gestartet wird, muss dieser dort konfiguriert werden:

    Unabhängig davon, welchen Anzeigemanager Sie verwenden, enthält eine Konfigurationsdatei in / etc / wahrscheinlich den verantwortlichen XServer-Parameter. Führen Sie grep -r 'nolisten tcp' /etc/auf Ihrem Laptop aus, um herauszufinden, welche Konfigurationsdatei verantwortlich ist, und entfernen Sie den Teil, in dem es heißt -nolisten tcp(nicht die gesamte Zeile, nur dieser Parameter). Starten Sie X auf Ihrem Laptop neu.

    Ihr Laptop sollte jetzt ein Display haben, das auf TCP-Port 6000 läuft (versuchen Sie es nmap -p6000 Laptopauf Ihrem Desktop-PC, wenn der Port als "offen" gemeldet wurde, sind Sie so weit gekommen).

  2. Stellen Sie Ihr X-Display dem Desktop-Computer zur Verfügung. X11 verwendet einen Authentifizierungsmechanismus, um Zugriff auf eine Anzeige zu gewähren. Sie müssen zulassen, dass der Desktop-PC Windows auf den Laptop aufnimmt. Normalerweise durch Austausch eines Display-Cookies.

    Führen Sie diesen Schritt zunächst mit den Händen auf Ihrem Notebook aus. Sobald Sie das Konzept mit der DISPLAYVariablen und allem bekommen haben, können Sie dies über ssh tun.

    Schnell und schmutzig: Sie können xhost +desktops.computers.ip.addressauf Ihrem Laptop X-Zugriff auf den Desktop-Computer gewähren. Beachten Sie, dass jeder Benutzer auf Ihrem Laptop-Computer die Anzeige Ihres Laptops X auf diese Weise verwenden kann. Beachten Sie, dass dies ausreichend ist, um zB einen Keylogger auf Ihrem Laptop-Display zu installieren. Verwenden Sie diese Methode nur zum Testen.

    Richtig und sicher: Führen Sie es xauth extract cookie-file :0auf Ihrem Laptop aus, um Ihr Display-Zugriffsgeheimnis in eine "Cookie-Datei" zu exportieren. Übertragen Sie das Cookie auf Ihren Desktop-Computer. Rennen xauth merge cookie-file. Oder in einem kurzen Schritt (von Ihrem Desktop) ssh Laptop xauth extract - :0 |xauth merge -Hinweis: Wenn Ihr Laptop und Ihr Desktop ein Home-Verzeichnis gemeinsam nutzen, dh über nfs, müssen Sie keine Anmeldeinformationen austauschen. Die Anmeldeinformationsdatenbank ist die .Xauthority-Datei in Ihrem Home-Verzeichnis und kann von verschiedenen Computern gemeinsam genutzt werden.

  3. Führen Sie das Programm aus: Führen Sie in einem Terminal auf Ihrem Desktop-PC export DISPLAY=Your.Laptops.IP.Address:0ein beliebiges X-Programm im selben Terminal aus. Es sollte auf dem Notebook-Display angezeigt werden.

Variante B - Verwenden von SSH mit einem Twist.

SSH führt die X11-Weiterleitung durch, indem ein lokaler X11-Socket (normalerweise ein Unix-Domain-Socket) an einen lokalen TCP-Socket auf dem Remotecomputer weitergeleitet wird. Anschließend wird das Anzeige-Cookie ausgehandelt und die DISPLAY-Umgebung auf dem Remotecomputer festgelegt. Auf diese Weise wird der gesamte X11-Verkehr über den SSH-Tunnel verschlüsselt. Der normale Anwendungsfall besteht darin, die lokale Anzeige an den Remotecomputer weiterzuleiten (dh Remoteanwendungen können x Fenster lokal anzeigen).

Der Vorteil von ssh ist, dass Sie Ihren X-Server nicht in den TCP-Listen-Modus versetzen müssen (da der Unix-Socket verwendet wird). Und ssh kümmert sich um den Austausch der Anmeldeinformationen.

  1. SSH von Ihrem Desktop-Computer auf Ihren Laptop (Sie müssen -X noch nicht verwenden).
  2. In der Remote Shell geben Sie export DISPLAY=:0dies ein, um die bereits laufende Anzeige auf Ihrem Notebook für die Shell verfügbar zu machen, die Sie über ssh erhalten haben. Wenn Sie jetzt einen X-Befehl ausführen, wird dieser bereits auf Ihrem Notebook-Bildschirm angezeigt, läuft jedoch weiterhin auf Ihrem Laptop (probieren Sie ihn aus, um sicher zu gehen).
  3. Verwenden Sie diesmal -X von dieser Shell-SSH zurück zu Ihrem Desktop-Computer. Sie haben jetzt eine Shell auf dem Computer, auf dem die SSH-Sitzung gestartet wurde, diesmal jedoch mit funktionierendem X. Führen Sie xeyes oder xcalc aus, um sie zu testen.
  4. echo $DISPLAYZeigt Ihnen die Bezeichnung, die Ihr Laptops X-Display jetzt auf Ihrem Desktop-Computer hat. Dh: 10 oder: 11.
  5. Sie können das Terminal jetzt minimieren. export DISPLAY=:10Jedes Mal, wenn Sie jetzt auf Ihrem Desktop-Computer eine Nummer eingeben (sehen Sie, welche Nummer Sie angezeigt haben), wird jedes Programm, das Sie anschließend in derselben Shell ausführen, auf dem Bildschirm Ihres Notebooks angezeigt.

    Diese Variante ist einfach, aber langsam, da der gesamte X11-Verkehr über SSH weitergeleitet wird.

Variante C - Das ursprüngliche ThinClient-Konzept:

Sie können Ihren Laptop verwenden, um eine Desktop-Sitzung zu öffnen, die vollständig auf Ihrem Desktop-Computer ausgeführt wird.

  1. Konfigurieren Sie den Anzeigemanager auf Ihrem Desktop für die Beantwortung von XDMCP-Broadcasts. Wie Sie dies tun, hängt von Ihrem Display-Manager ab. Einige Display-Manager unterstützen dies überhaupt nicht, dh sie sind schlank. XDM, KDM, WDM, GDM unterstützen dies.

  2. Starten Sie einen X-Server auf Ihrem Laptop, der den Display Manager von Ihrem Desktop aus anfordert. Entweder ein verschachteltes X: Xephyr :1 -query desktopoder Xephyr :1 -broadcast Sie fahren Ihren Notebooks X-Server herunter und rufen ein System-Terminal aufsudo Xorg :0 -broadcast

    Der Anzeigemanager sorgt dafür, dass Anmeldeinformationen generiert und ausgetauscht werden und alles. Herzlichen Glückwunsch, Sie sollten jetzt ein Anmeldefenster sehen, das von Ihrem Desktop-Computer bereitgestellt wird.

Paul Hänsch
quelle
2
BTW. All diese wundervolle X11-Funktionalität funktioniert erst, wenn Ubuntu zu Wayland wechselt. NAtive Wayland-Anträge können nicht einmal mehr über ssh weitergeleitet werden.
Paul Hänsch
6
Ist es nicht ziemlich ironisch, dass es keine grafische Toolchain zur Steuerung Ihres X-Servers gibt? Wenn Sie wirklich mit GUIs arbeiten möchten, müssen Sie zuerst die Befehlszeile dominieren.
Paul Hänsch
Allgemeiner Hinweis: Das erste Programm, das Sie möglicherweise auf Ihrem Remote-Bildschirm starten möchten, ist ein Anwendungsstarter. Dh lxpanel oder so. Dies spart eine Menge Kommandozeilenarbeit.
Paul Hänsch
Funktioniert dies immer noch für Ubuntu 17 + ... oder hat sich die Wayland-Vorhersage bewährt?
Xen2050
19

Sie können die Weiterleitung von ssh X verwenden, um Ihr Ziel zu erreichen. Wenn Sie sich im selben Subnetz befinden, wird es schnell beendet.

Installieren Sie den SSH-Server und -Client auf Ihrem Laptop und Desktop-PC

sudo apt-get install ssh

Um eine Verbindung zum Desktop-PC herzustellen, öffnen Sie ein Terminal auf dem Laptop und geben Sie Folgendes ein

ssh -X username@desktop_pc_ip

Und Sie können jede Software über das Terminal starten, zum Beispiel Firefox. Geben Sie einfach firefoxdas Terminal ein.

OHLÁLÁ
quelle
2
Vergessen Sie nicht zu überprüfen, ob in den sshd-Konfigurationsdateien (normalerweise / etc / ssh / sshd_config) X11Forwarding ebenfalls auf yes gesetzt ist.
Matrix Mole
Hier ist mein Anwendungsfall: Ich befinde mich auf meinem Desktop und öffne beispielsweise Firefox, möchte jedoch, dass sich das Browserfenster auf meinem Laptop-Bildschirm öffnet und weiterhin auf meinem Desktop ausgeführt wird. Ich bin auf der Suche nach einer ähnlichen Funktionalität wie Workspaces, aber anstelle eines lokalen Workspace (4 Bildschirme auf demselben PC), um einen Remote-Workspace (den Laptop) zu verwenden
Vlad Balmos
2
Sie können das x2xPaket auch ausprobieren . Sie können eine Tastatur und eine Maus auf einem anderen Computer verwenden. Ex:ssh -X user@host x2x -west -to :0
OHLÁLÁ
@iUngi Ich nutze bereits die Synergie dafür, trotzdem danke
Vlad Balmos
Beachten Sie, dass Sie durch Öffnen des Zugriffs auf den X-Server Ihres Desktops einen weitreichenden Zugriff auf den Remotecomputer erhalten. Wenn Ihr Server kompromittiert wurde, kann dies auch verwendet werden, um auf Ihren Desktop zuzugreifen. Die X11-Weiterleitung ist nützlich, aber denken Sie darüber nach, was Sie tun, und aktivieren Sie sie nicht standardmäßig.
mc0e
7

Vorbereitung

(du machst das nur einmal)

Installieren Sie auf Ihrem Desktop den SSH-Server

sudo apt-get installiere openssh-server


Von Ihrem Laptop:

ssh -X Benutzername @ desktop_pc_ip

Im Terminal wird alles, was Sie ausführen, auf Ihrem Desktop angezeigt, jedoch auf Ihrem Laptop. Wenn Sie dasselbe tun möchten, während Sie auf Ihrem Desktop sitzen (und Windows auf Ihrem Laptop senden), fahren Sie fort.

Auf Ihrem Terminal laufen Sie

echo $ DISPLAY

Dies zeigt Ihnen etwas wie:

localhost:10.0

Von Ihrem Desktop aus:

Öffnen Sie ein Terminal und führen Sie es aus

DISPLAY=:10.0 firefox

Dies sollte ein firefoxFenster auf Ihrem Laptop senden, das jedoch auf Ihrem Desktop ausgeführt wird. Stellen Sie sicher, dass die eingegebene Nummer (z. B. 10.0) mit der im echoErgebnis übereinstimmt

Nick Andrik
quelle
3

Sie möchten eine Kombination aus SSH und Bildschirm verwenden, um die gewünschte Situation zu erhalten.

Installieren Sie auf Ihrem Desktop den Bildschirm:

sudo apt-get install screen

Starten Sie von dort aus eine neue Bildschirmsitzung:

Bildschirm

und öffnen Sie Firefox darin:

Feuerfuchs

Benutze Firefox so oft du willst auf deinem Desktop und ssh dann von deinem Laptop auf deinen Computer:

ssh -X Benutzername @ Hostname

Geben Sie den folgenden Befehl ein, um festzustellen, welche Bildschirmsitzungen ausgeführt werden:

Bildschirm -ls

Melden Sie sich bei Ihrer Bildschirmsitzung an (1234 wäre die Nummer, die Sie auf dem Bildschirm erhalten haben).

Bildschirm -x 1234

Dann können Sie Firefox auf Ihrem Laptop verwenden und das Terminal auf Ihrem Desktop schließen.

user530873
quelle
habe das versucht. Bildschirm vom Terminal aus öffnen, Firefox auf dem Desktop starten, dann vom Laptop auf den Desktop sshed, die Bildschirmsitzung anhängen, aber ich bekomme kein Fenster auf dem Laptop, nur die Ausgabe des laufenden Programms auf dem Bildschirm.
Vlad Balmos
Du hast es durcheinander gebracht. Warten Sie ... mindestens einer von Ihnen hat. Installieren Sie den Bildschirm auf Ihrem Desktop-Computer, verwenden Sie Ihr Notebook, ssh -Xum ihn auf Ihrem Desktop zu installieren, starten Sie den Bildschirm in der SSH-Sitzung, trennen Sie ihn und lassen Sie die Sitzung laufen. Verbinden Sie dann die Bildschirmsitzung erneut mit den Händen auf Ihrem Desktop-Computer und führen Sie etwas aus. Dies ähnelt meiner Antwort "SSH with a twist". Durch die Verwendung des Bildschirms wird die Benutzerfreundlichkeit erhöht.
Paul Hänsch
3

Virtualgl erstellt einen zusätzlichen (Hintergrund-) Desktop (TightVNC-Stil) , auf den Sie über einen Turbo-VNC-Client zugreifen können . Es funktioniert wie ein Remote-Desktop-Deal -> aber es wird ein flüssiges Video über ein Netzwerk abgespielt.

Wenn Sie nach einer Möglichkeit suchen, den CPU-Aufwand zu verringern für eine , damit Sie Apps von Ihrem Computer auf Ihrem Laptop ausführen können, ist dies das, was ich tun würde.

http://www.virtualgl.org/

Sie können die Desktop-Umgebung auch über SSH als / dude (siehe oben) exportieren.

TardisGuy
quelle
Vielen Dank. Sieht vielversprechend aus. Ich werde einen Blick darauf werfen und dich auf dem Laufenden halten.
Vlad Balmos
Ja, "TurboVNC" (außerdem seine Komponente VirtualGL) ist das Ergebnis meiner Suche nach einem Remote-Desktop-Programm, mit dem ich Videospiele und Filme abspielen kann. Es würde leicht als zusätzlicher Monitor funktionieren.
TardisGuy
1

Nachdem ich ein bisschen online gebuddelt hatte, kam ich zu DMX

Von der Homepage

Xdmx ist ein Proxy-X-Server, der Multi-Head-Unterstützung für mehrere Anzeigen bietet, die an verschiedene Computer angeschlossen sind (auf denen jeweils ein typischer X-Server ausgeführt wird). Wenn Xinerama mit Xdmx verwendet wird, werden die mehreren Anzeigen auf mehreren Computern dem Benutzer als ein einziger einheitlicher Bildschirm angezeigt.

Vlad Balmos
quelle
1
Dies ist eine bessere Antwort, wenn Sie Anweisungen zur Installation und Verwendung geben können.
fossfreedom
XmetaX bietet ähnliche Funktionen. Gibt es eine Alternative zu Xdmx und XmetaX?
Mariusz
1

Ja, es ist möglich. Ich nehme beide Linux-Computer mit Xclock auf dem lokalen Computer installiert. Ich versuche, xclock lokal auszuführen und die Uhr auf einem entfernten Linux-Computer anzuzeigen.

reboot the remote machine
Disable firewall
Disable SELINUX
Check $DISPLAY variable value by command
echo $DISPLAY
Let say its value is :1
run command
xhost +

Now on local computer
xclock -display remote_machine_IP_address:1
Mian Asbat Ahmad
quelle