X11-Weiterleitung mit Xming über SSH?

11

Ich habe SSH-Zugriff und Xming sowie Xming-Schriftarten installiert. Ich habe PuTTY so konfiguriert, dass es x11 weiterleitet, und es angewiesen, den Desktop gemäß den Anweisungen hier auf localhost: 0 zu platzieren .

Nachdem ich mich angemeldet habe und startx... nichts bekomme. Oder besser gesagt, es werden eine Reihe von Nachrichten ausgeführt, die anscheinend besagen, dass alles funktioniert, aber ich erhalte einen Cursor in meinem Konsolenfenster, der sich wie in einem Wartezustand verhält. Und das ist es.

Was vermisse ich? Muss ich etwas öffnen, um den Desktop zu sehen?

Ich möchte meinen Desktop an meinen Arbeits-PC weiterleiten, damit ich beim Mittagessen mit RasPi spielen kann, ohne die Hardware physisch anzuschließen. Bitte helfen Sie.

BEARBEITEN:

Screenshot von dem, was mit Xming passiert, und ich SSH in und rufe an startx:

SSH mit Xming-Antwort

EDIT 2:

Diese Antwort besagt startx, dass dies nicht erforderlich ist, da der RasPi X-Server gestartet wird und ich den Xming-Server unter Windows verwende. Wie komme ich in diesem Fall unter Windows auf den Desktop / die Benutzeroberfläche von Xming? Denn selbst wenn Xming ausgeführt und SSH aktiviert ist, erhalte ich nur eine normale Konsolenaufforderung. Vielleicht mache ich es falsch. Was ich möchte, ist meine vollständige, normale RasPi-Benutzeroberfläche, die in einem Fenster auf meinem Remote-Windows-PC ausgeführt wird. Ich möchte VNC nicht verwenden. Ich leite über das Internet weiter. Wie komme ich dort hin?

Zenbike
quelle
2
Ich wollte auch eine grafische Sitzung von meiner Himbeere auf meinem Windows-Computer ausführen. Und als ich Ihre Nachricht gesehen habe, dass startx bedeutet, X-Server zu starten, habe ich verstanden, dass ich ein X-Programm starten muss ... Also lasst uns den ... x-Session-Manager starten! Auf diese Weise haben Sie die grafische Sitzung auf Ihrem entfernten Computer. danke, du hast mir den weg gegeben!

Antworten:

15

Wenn Sie Xming auf Ihrem Windows-Computer starten, wird bereits ein X-Server ausgeführt. Sie müssen den X-Server Ihres Raspberry Pi nicht mit starten startx. Ihre X-Anwendungen werden auf dem Raspberry Pi ausgeführt, die Anwendung wird jedoch auf den Xming X-Server von Windows übertragen.

In der von Ihnen verlinkten Dokumentation heißt es , dass Sie den X-Server unter Windows starten müssen, und es wird nicht erwähnt, dass Sie den X-Server unter Linux starten müssen. Im letzten Satz der Dokumentation:

Sie sollten nun in der Lage sein, X-Anwendungen vom Host auf Ihrem lokalen Desktop auszuführen

"X-Anwendungen" bezieht sich nicht auf den X-Server (von dem gestartet werden soll startx), sondern auf Anwendungen wie xclock, xeyes usw.

Eine spezielle X-Anwendung ist lxsession, mit der der Standard-Sitzungsmanager von LXDE gestartet wird (zumindest auf meinem Raspbian). Wenn Sie diese Anwendung auf der Konsole starten, erhalten Sie die "vollständige Benutzeroberfläche", nach der Sie suchen:

lxsession

Persönlich finde ich es nicht sinnvoll zu starten lxsession, das Starten der X-Anwendungen auf der Konsole ist für mich viel einfacher.

asalamon74
quelle
1
In Ordnung. Das kann ich verstehen, denke ich. Sie sagen, startx ist nicht erforderlich, da es den RasPi x-Server startet und ich den Xming-Server unter Windows verwende. In diesem Fall, wie ich von Windows aus auf den Desktop / die GUI von Xming komme. Denn selbst wenn Xming ausgeführt und SSH aktiviert ist, erhalte ich nur eine normale Konsolenaufforderung. Sie sagen, ich würde nur die eigentliche Anwendung in xming ausführen, nicht die vollständige GUI. Vielleicht mache ich es falsch. Was ich möchte, ist meine vollständige, normale RasPi-Benutzeroberfläche, die in einem Fenster auf meinem Remote-Windows-PC ausgeführt wird. Ich möchte VNC nicht verwenden. Ich leite über das Internet weiter.
Zenbike
Die Antwort wurde aktualisiert.
Asalamon74
Funktioniert perfekt, wenn (wie erwartet) etwas langsam reagiert wird. Danke für deine Hilfe.
Zenbike
1
… Und das ist der Grund, warum Ihr Guide empfiehlt, einzelne Apps gleichzeitig über ssh auszuführen ...
Alexander - Reinstate Monica
1
@ asalamon74 Danke! Beeindruckend! Das ist nur Kickass. Ich muss mich nicht mit der Tastatur und der Maus befassen, die über einen wahnsinnig kurzen Draht mit dem USB verbunden sind. Ich saß mit dem obigen Setup vor dem Fernseher. JETZT? Ich ssh nur und leite die GUI wie ein Chef !!
Dheeraj Bhaskar
1

Verwenden von Cygwin / X.

Wenn Sie nicht an Xming gebunden sind, können Sie stattdessen Cygwin / X zum Ausführen eines X-Servers unter Windows verwenden.

Raspberry Pi vorbereiten

Versuchen Sie, mit PowerShell eine reguläre SSH-Verbindung von Windows zum Raspberry Pi herzustellen:

Melden Sie sich unter Windows mit PowerShell und SSH bei Raspberry Pi an

Da Raspbian Buster enthält X11Forwarding yesin /etc/ssh/sshd_configIhrem Raspberry Pi sollte auch die visuelle Ausgabe von X11 - Anwendungen auf einen X - Server unter Windows weiterleiten kann.

Der nächste Schritt zeigt, wie dieser X-Server installiert wird.

Installieren Sie Cygwin / X unter Windows

Cygwin / X bietet einen X-Server für Windows, auf dem GUI-Anwendungen angezeigt werden, die auf dem Raspberry Pi ausgeführt werden.

  1. Laden Sie die Websitesetup-x86_64.exe von Cygwin herunter und führen Sie sie aus .

  2. Für Cygwins "Local Package Directory" können Sie verwenden C:\Users\me\AppData\Roaming\Cygwin.

  3. Wählen Sie einen Server in Ihrer Nähe zum Herunterladen von Paketen.

  4. Stellen Sie "Ansicht" auf "Voll" und suchen Sie nach xinit.

  5. Verwenden Sie in der Spalte "Neu" das Dropdown-Menü, um den Wert von "Überspringen" auf xinitdie neueste Version zu ändern :

Installieren Sie das Paket xinit mit Cygwin

  1. Installieren Sie das Paket auf opensshdie gleiche Weise.

Stellen Sie unter Windows eine Verbindung zu Raspberry Pi her

  1. Starten Sie den X-Server über das Windows-Startmenü : Cygwin-X → XWin Server. Dadurch werden keine Fenster geöffnet, aber in Ihrer Taskleiste sollten zwei neue Symbole angezeigt werden:

XWin-Serversymbole in der Taskleiste

  1. Starten Sie das Cygwin-Terminal: Cygwin → Cygwin64 Terminal

  2. Legen Sie die DISPLAYUmgebungsvariable fest, auf der der X-Server unter Windows ausgeführt wird:

    export DISPLAY=:0.0

  3. Stellen Sie mit X11-Weiterleitung eine Verbindung zu Ihrem Raspberry Pi her:

    ssh -Y pi@raspberrypi

Melden Sie sich mit dem Cygwin Terminal an

Innerhalb der SSH-Sitzung können Sie jetzt eine X-Anwendung auf dem Raspberry Pi wie Thonny starten :

Thonny wurde an Windows weitergeleitet

Alternativ können Sie, wie in den Kommentaren der Frage erwähnt, als Benutzer1297 x-session-managerdie Erfahrung emulieren, die Sie beim Herstellen einer Verbindung zum Raspberry Pi über HDMI auf einem externen Monitor erhalten würden:

Rasbpian Desktop wurde an Windows weitergeleitet

Wenn Sie eine Anwendung direkt starten möchten, ohne zuvor ihren Namen in die Shell einzugeben, verwenden Sie Folgendes:

ssh -Y pi@raspberrypi x-session-manager

Unter macOS

XQuartz bietet einen X-Server für macOS.

Installieren Sie XQuartz, melden Sie sich ab und wieder an (um den neuen Wert DISPLAYeffektiv zu nutzen) und starten Sie dann Anwendungen mit SSH von Bash:

ssh -Y pi@raspberrypi thonny

Thonny in macOS mit XQuartz

Matthias Braun
quelle
1

Wenn Sie bereits einen X-Server unter Windows ausführen (wie bei Xming), ist die Windows-Seite meistens fertig (einige wichtige Details finden Sie weiter unten). Das verbleibende Schlüsselbit besteht darin, die X11-Apps auf dem Pi anzuweisen, ihre X11-Daten an Ihren Windows-PC zu senden.

Dies erfolgt über die DISPLAYUmgebungsvariable. Wenn der X-Server und die App auf demselben Computer ausgeführt werden, gibt DISPLAY normalerweise nur die Servernummer an (z. B. :0wenn Sie nur einen X-Server ausführen ) oder möglicherweise einen Server und einen Bildschirm (z :0.0. B. ). Da es keine IP-Adresse gibt, teilt dies der X-Bibliothek der Apps mit, dass der Server lokal ist und die Verbindungen entsprechend hergestellt werden (wahrscheinlich durch eine Art Shared-Memory-Transport).

Fügen Sie der DISPLAYVariablen eine IP-Adresse hinzu, um die App anzuweisen, X11-Daten an einen Remote-Knoten zu senden . Zum Beispiel export DISPLAY=192.168.1.10:0. Dadurch wird allen X11-Apps mitgeteilt, dass sie eine TCP-Verbindung zum X-Server Nr. 0 auf Knoten 192.168.1.10 herstellen müssen. DNS-Hostnamen sind hier in Ordnung, wenn Sie sie in Ihrem Netzwerk haben.

Zwei mögliche Probleme

Wie ich im ersten Absatz geschrieben habe, reicht es möglicherweise nicht aus, Xming einfach auszuführen. Möglicherweise ist eine zusätzliche Konfiguration erforderlich.

Der erste ist, dass Ihr X11-Server so konfiguriert sein muss, dass Verbindungen von Remote-Knoten über TCP akzeptiert werden. Viele heute verteilte X-Server (ich weiß nichts über Xming) akzeptieren nur Verbindungen von lokal ausgeführten Apps, sofern Sie diese nicht ausdrücklich anders konfigurieren. Dies ist ein Sicherheitsmerkmal, da jeder offene Socket ein potenzieller Angriffsvektor ist.

Der zweite ist, dass Ihr X11-Server eine Datenbank mit Hosts / Benutzern verwaltet, die eine Verbindung herstellen dürfen. Sie müssen die IP-Adresse Ihres Raspberry Pi auf die Whitelist setzen. Sie können dies tun, indem Sie den xhostBefehl von Xming unter Windows aus ausführen, z. B. von einer Konsole, die in einem xterm ausgeführt wird. Sie können auch eingeben xhost +, um diese Sicherheitsüberprüfung zu deaktivieren. Dies ist jedoch gefährlich, da jede App von überall auf der Welt Verbindungen zu Ihrem Display herstellen kann. Wenn Sie sich hinter einer Firewall in einem LAN befinden, in dem Sie allen vertrauen (z. B. Ihrem eigenen Zuhause), ist dies der einfachste Ansatz. Nehmen Sie sich jedoch die Zeit, um die Konfiguration ordnungsgemäß durchzuführen, xhostwenn Sie dies nicht tun.

Alternative: ssh -Y

Mit dem oben beschriebenen Ansatz versuchen alle Ihre X11-Apps, TCP-Verbindungen zu Ihrem X-Server herzustellen. Diese Verbindungen sind nicht sicher. Jemand in Ihrem LAN kann Snooping-Pakete abfangen.

Verwenden Sie zur Lösung dieses Problems den -YParameter, wenn Sie eine Verbindung herstellen , anstatt die Variable DISPLAY auf dem Raspberry pi festzulegen (z slogin -Y hostname. B. ). Der Parameter -Y (wie -X) erstellt einen Tunnel zwischen den Knoten für die Übertragung von X11-Verkehr. Dadurch bleibt der X11-Verkehr verschlüsselt und sicher. Außerdem wird eine eigene Umgebungsvariable DISPLAY zugewiesen, sodass Apps den Tunnel verwenden. Möglicherweise müssen Sie sich auch nicht mehr damit herumschlagen, xhostda (was Ihren X-Server betrifft) die Verbindungen lokal (von der Ursprungsseite des SSH-Tunnels) stammen.

David C.
quelle