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
:
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?
Antworten:
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:
"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:
Persönlich finde ich es nicht sinnvoll zu starten
lxsession
, das Starten der X-Anwendungen auf der Konsole ist für mich viel einfacher.quelle
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:
Da Raspbian Buster enthält
X11Forwarding yes
in/etc/ssh/sshd_config
Ihrem 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.
Laden Sie die Website
setup-x86_64.exe
von Cygwin herunter und führen Sie sie aus .Für Cygwins "Local Package Directory" können Sie verwenden
C:\Users\me\AppData\Roaming\Cygwin
.Wählen Sie einen Server in Ihrer Nähe zum Herunterladen von Paketen.
Stellen Sie "Ansicht" auf "Voll" und suchen Sie nach
xinit
.Verwenden Sie in der Spalte "Neu" das Dropdown-Menü, um den Wert von "Überspringen" auf
xinit
die neueste Version zu ändern :openssh
die gleiche Weise.Stellen Sie unter Windows eine Verbindung zu Raspberry Pi her
Cygwin-X → XWin Server
. Dadurch werden keine Fenster geöffnet, aber in Ihrer Taskleiste sollten zwei neue Symbole angezeigt werden:Starten Sie das Cygwin-Terminal:
Cygwin → Cygwin64 Terminal
Legen Sie die
DISPLAY
Umgebungsvariable fest, auf der der X-Server unter Windows ausgeführt wird:export DISPLAY=:0.0
Stellen Sie mit X11-Weiterleitung eine Verbindung zu Ihrem Raspberry Pi her:
ssh -Y pi@raspberrypi
Innerhalb der SSH-Sitzung können Sie jetzt eine X-Anwendung auf dem Raspberry Pi wie Thonny starten :
Alternativ können Sie, wie in den Kommentaren der Frage erwähnt, als Benutzer1297
x-session-manager
die Erfahrung emulieren, die Sie beim Herstellen einer Verbindung zum Raspberry Pi über HDMI auf einem externen Monitor erhalten würden:Wenn Sie eine Anwendung direkt starten möchten, ohne zuvor ihren Namen in die Shell einzugeben, verwenden Sie Folgendes:
Unter macOS
XQuartz bietet einen X-Server für macOS.
Installieren Sie XQuartz, melden Sie sich ab und wieder an (um den neuen Wert
DISPLAY
effektiv zu nutzen) und starten Sie dann Anwendungen mit SSH von Bash:quelle
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
DISPLAY
Umgebungsvariable. Wenn der X-Server und die App auf demselben Computer ausgeführt werden, gibt DISPLAY normalerweise nur die Servernummer an (z. B.:0
wenn 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
DISPLAY
Variablen eine IP-Adresse hinzu, um die App anzuweisen, X11-Daten an einen Remote-Knoten zu senden . Zum Beispielexport 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
xhost
Befehl von Xming unter Windows aus ausführen, z. B. von einer Konsole, die in einem xterm ausgeführt wird. Sie können auch eingebenxhost +
, 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,xhost
wenn 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
-Y
Parameter, wenn Sie eine Verbindung herstellen , anstatt die Variable DISPLAY auf dem Raspberry pi festzulegen (zslogin -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,xhost
da (was Ihren X-Server betrifft) die Verbindungen lokal (von der Ursprungsseite des SSH-Tunnels) stammen.quelle