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 DISPLAY
variabile 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. :0
Se 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 DISPLAY
variabile. 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 xhost
comando 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 xhost
se 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 -Y
parametro 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 xhost
poiché (per quanto riguarda il tuo server X) le connessioni hanno origine localmente (dal lato di origine del tunnel SSH).