Inoltro X11 con Xming su SSH?


11

Ho accesso a SSH e ho installato Xming, insieme ai caratteri Xming. Ho configurato PuTTY per inoltrare x11 e gli ho detto di posizionare il desktop su localhost: 0, secondo le istruzioni qui .

Tuttavia, dopo aver effettuato l'accesso, e startxnon ottengo ... nulla. O meglio, esegue un mucchio di messaggi che sembrano dire che tutto funziona, ma ho un cursore nella finestra della mia console che si comporta come se fosse in uno stato di attesa. E questo è tutto.

Cosa mi sto perdendo? Devo aprire qualcosa per vedere il desktop?

Voglio inoltrare il mio desktop al PC di lavoro, in modo da poter giocare con RasPi a pranzo senza collegare fisicamente l'hardware. Per favore aiuto.

MODIFICARE:

Schermata di ciò che accade con Xming in esecuzione, e SSH in e chiama startx:

SSH con risposta Xming

MODIFICA 2:

Questa risposta dice che startxnon è necessario, perché avvia il server RasPi X e sto usando il server Xming su Windows. In tal caso, come posso accedere al desktop / alla GUI su Xming da Windows? Perché, anche con Xming in esecuzione e SSH abilitato, non ottengo altro che un normale prompt della console. Forse sto sbagliando. Quello che voglio è la mia GUI RasPi completa e normale in esecuzione in una finestra sul mio PC Windows remoto. Non voglio usare VNC. Sto inoltrando su Internet. Come ci arrivo?


2
Volevo anche eseguire una sessione grafica dal mio Raspberry al mio computer Windows. E quando ho visto il tuo messaggio che diceva che startx significa avviare X server, ho capito che dovevo avviare un programma X ... Quindi iniziamo il ... x-session-manager! in questo modo, hai la sessione grafica sul tuo computer remoto. grazie, mi hai dato la strada!

Risposte:


15

Se avvii Xming sul tuo computer Windows, allora hai già un server X in esecuzione. Non è necessario avviare il server X di Raspberry Pi utilizzando startx. Le tue applicazioni X verranno eseguite su Raspberry Pi ma l'applicazione attirerà il server Xming X di Windows.

La documentazione che hai collegato afferma che devi avviare X server su Windows e non menziona il fatto che devi avviare X server su Linux. Nell'ultima frase della documentazione:

Ora dovresti essere in grado di eseguire le applicazioni X dall'host sul desktop locale

"Applicazioni X" si riferisce non al server X (che dovrebbe essere avviato da startx) ma ad applicazioni come xclock, xeyes e così via.

Un'applicazione X speciale è lxsession che avvierà il gestore di sessioni standard di LXDE (almeno su my Raspbian). L'avvio di questa applicazione sulla console ti darà la "GUI completa" che stai cercando:

lxsession

Personalmente non trovo utile iniziare lxsession, avviare le applicazioni X sulla console è molto più facile per me.


1
Ok. Questo posso capire, penso. Stai dicendo che startx non è necessario, perché avvia il server RasPi x e sto usando il server Xming su Windows. In tal caso, come accedere al desktop / alla GUI su Xming da Windows. Perché, anche con Xming in esecuzione e SSH abilitato, non ottengo altro che un normale prompt della console. Stai dicendo che avrei eseguito solo l'applicazione effettiva in xming, non l'intera interfaccia grafica. Forse sto sbagliando. Quello che voglio è la mia GUI RasPi completa e normale in esecuzione in una finestra sul mio PC Windows remoto. Non voglio usare VNC. Sto inoltrando su Internet.
zenbike,

Aggiornato la risposta.
asalamon74,

Funziona perfettamente, se (come previsto) un po 'lento a rispondere. Grazie per l'aiuto.
zenbike,

1
... E questo è il motivo per cui la tua guida consiglia di eseguire singole app su ssh alla volta ...
Alexander - Ripristina Monica il

1
@ asalamon74 Grazie! Wow! questo è solo kickass. Non ho a che fare con la tastiera e il mouse collegati all'USB con un filo follemente corto. Mi sedevo davanti alla tv con la configurazione sopra. ADESSO? Ho appena lanciato e gestito la GUI come un boss !!
Dheeraj Bhaskar

1

Utilizzando Cygwin / X

Se non sei legato a Xming, puoi invece usare Cygwin / X per eseguire un server X in Windows.

Preparare il Raspberry Pi

Prova a stabilire una connessione SSH regolare da Windows a Raspberry Pi usando PowerShell:

Accedi a Raspberry Pi su Windows con PowerShell e SSH

Dato che Raspbian Buster include X11Forwarding yesin /etc/ssh/sshd_config, Raspberry Pi dovrebbe anche essere in grado di inoltrare l'output visivo delle applicazioni X11 a un server X su Windows.

Il passaggio successivo mostra come installare quel server X.

Installa Cygwin / X su Windows

Cygwin / X fornisce un server X per Windows che visualizza le applicazioni GUI in esecuzione su Raspberry Pi.

  1. Scarica ed esegui setup-x86_64.exedal sito Web di Cygwin .

  2. Per la "Directory dei pacchetti locali" di Cygwin è possibile utilizzare C:\Users\me\AppData\Roaming\Cygwin.

  3. Scegli un server vicino a te per scaricare i pacchetti.

  4. Impostare "Visualizza" su "Completo" e cercare xinit.

  5. Nella colonna "Nuovo", utilizza il menu a discesa per modificare il valore da "Salta" xinitall'ultima versione:

Installa il pacchetto xinit con Cygwin

  1. Installa il pacchetto opensshallo stesso modo.

Connettiti a Raspberry Pi da Windows

  1. Avviare il server X utilizzando il menu di avvio di Windows': Cygwin-X → XWin Server. Questo non aprirà alcuna finestra, ma dovresti vedere due nuove icone nella barra delle applicazioni:

Icone del server XWin nella barra delle applicazioni

  1. Avviare il terminale Cygwin: Cygwin → Cygwin64 Terminal

  2. Impostare la DISPLAYvariabile di ambiente su cui viene eseguito il server X su Windows:

    export DISPLAY=:0.0

  3. Collegati al tuo Raspberry Pi con l'inoltro X11:

    ssh -Y pi@raspberrypi

Accedi con Cygwin Terminal

All'interno della sessione SSH, ora puoi avviare un'applicazione X sul Raspberry Pi come Thonny :

Thonny inoltrò a Windows

In alternativa, come indicato dall'utente1297 nei commenti della domanda, è possibile eseguire x-session-managerper emulare l'esperienza che si otterrebbe durante la connessione a Raspberry Pi tramite HDMI su un monitor esterno:

Il desktop di Rasbpian è stato annullato su Windows

Se vuoi avviare un'applicazione direttamente senza prima digitare il suo nome nella shell, usa questo:

ssh -Y pi@raspberrypi x-session-manager

Su macOS

XQuartz fornisce un server X per macOS.

Installare XQuartz, disconnettersi e riconnettersi (per rendere DISPLAYefficace il nuovo valore ), quindi avviare le applicazioni con SSH di Bash:

ssh -Y pi@raspberrypi thonny

Thonny dentro macOS usando XQuartz


1

Se stai già eseguendo un server X su Windows (come lo sei con Xming), il lato Windows è per lo più fatto (ma vedi sotto per alcuni dettagli importanti). Il bit rimanente è dire alle app X11 sul pi di inviare i loro dati X11 al tuo PC Windows.

Questo viene fatto tramite la DISPLAYvariabile d'ambiente. Normalmente, se il server X e l'app sono in esecuzione sullo stesso computer, DISPLAY specifica semplicemente il numero del server (ad es. :0Se si utilizza un solo server X) o forse un server e uno schermo (ad es :0.0.). Poiché non esiste un indirizzo IP, ciò indica alla libreria X delle app che il server è locale e che le connessioni verranno effettuate di conseguenza (probabilmente attraverso una sorta di trasporto di memoria condivisa).

Per dire all'app di inviare i dati X11 a un nodo remoto, includere un indirizzo IP nella DISPLAYvariabile. Ad esempio export DISPLAY=192.168.1.10:0,. Questo dirà a tutte le app X11 che devono aprire una connessione TCP al server X # 0 sul nodo 192.168.1.10. I nomi host DNS vanno bene qui, se li hai sulla tua rete.

Due potenziali problemi

Come ho scritto nel primo paragrafo, semplicemente eseguire Xming potrebbe non essere sufficiente. Potrebbe essere necessaria una configurazione aggiuntiva.

Il primo è che il server X11 deve essere configurato per accettare connessioni da nodi remoti tramite TCP. Molti server X distribuiti oggi (non conosco Xming) accettano connessioni solo da app in esecuzione localmente, a meno che non le si configuri esplicitamente diversamente. Questa è una funzione di sicurezza, poiché ogni socket aperto è un potenziale vettore per l'attacco.

Il secondo è che il tuo server X11 mantiene un database di host / utenti a cui è consentito connettersi. Devi inserire nella whitelist l'indirizzo IP del tuo Raspberry Pi. Puoi farlo eseguendo il xhostcomando da Xming su Windows, ad esempio, da una console in esecuzione in un xterm. Puoi anche digitare xhost +per disabilitare questo controllo di sicurezza, ma è pericoloso perché consentirà a qualsiasi app in qualsiasi parte del mondo di aprire connessioni al tuo display. Se sei dietro un firewall su una LAN in cui ti fidi di tutti (ad es. La tua casa), questo è l'approccio più semplice, ma prenditi il ​​tempo per configurare correttamente xhostse non lo sei.

Alternativa: ssh -Y

Usando l'approccio sopra, le tue app X11 proveranno tutte ad aprire connessioni TCP al tuo server X. Queste connessioni non sono sicure. Qualcuno sui pacchetti snooping della LAN può intercettarli.

Per risolvere questo problema, invece di impostare la variabile DISPLAY su Raspberry pi, utilizzare il -Yparametro durante la connessione (ad es slogin -Y hostname.). Il parametro -Y (come -X) creerà un tunnel tra i nodi per trasportare il traffico X11. Ciò manterrà il traffico X11 crittografato e sicuro. Assegnerà anche la propria variabile d'ambiente DISPLAY in modo che le app utilizzino il tunnel. Può anche eliminare la necessità di confondere xhostpoiché (per quanto riguarda il tuo server X) le connessioni hanno origine localmente (dal lato di origine del tunnel SSH).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.