Grazie a @jensd, @unxnut per avermi aiutato. in base ai tuoi commenti sono stato in grado di capire il problema.
La soluzione ha richiesto due passaggi:
- la variabile DISPLAY deve essere impostata correttamente.
- quando si invia al server remoto, l'opzione -X deve essere attiva
i miei precedenti tentativi mancano di una o entrambe queste due condizioni.
Ad ogni modo, per gli utenti successivi che vedono questo qui ci sono esempi per mostrarti cosa sto cercando di dire.
caso 1
la mia macchina locale non avrà alcuna variabile DISPLAY impostata. E poi farò SSH al server remoto con l'opzione -X e poi proverò ad eseguire xclock
.
Black@Black-PC ~
$ echo $DISPLAY
## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.
come puoi vedere, Error: Can't open display:
viene visualizzato un errore sul terminale del server remoto.
case2
questa volta, sulla macchina locale, specificherò la variabile DISPLAY. Ma quando sto lanciando, non accenderò l'interruttore -X. Il risultato sarà un errore:
Black@Black-PC ~
$ export DISPLAY=:0.0
Black@Black-PC ~
$ echo $DISPLAY
:0.0
Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$
all'inizio puoi vedere che ho impostato correttamente la variabile DISPLAY. Ma anche così, dopo ssh'ing (senza l'opzione -X) l'xclock non viene eseguito.
* Un risultato diverso con setenv | grep DISPLAY
può essere visto qui (confronta con case1). in case2, il risultato è semplicemente vuoto. d'altra parte, il risultato di case1 a questa riga di comando è DISPLAY: undefined variable
.... Non sono sicuro di come sia causata questa differenza, ma ho la sensazione che sia correlata al fatto che tu abbia soddisfatto la condizione 1. o 2 .
case3
questa volta, specificherò correttamente la variabile DISPLAY sul computer locale e anche ssh sul server remoto con il mio switch -X attivato.
Black@Black-PC ~
$ echo $DISPLAY
:0.0
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$
con questa impostazione, xclock
funziona !! ecco uno screenshot per dimostrare che non sto mentendo.
l'xclock viene mostrato correttamente nel mio computer locale.
Ancora una volta, controlla il risultato setenv | grep DISPLAY
in questo caso. Ora mostra DISPLAY=localhost:11.0
. Da quello che so, questo è correlato a MIT-MAGIC-COOKIE nel file .Xauthority ma dato che non ne so molto, non andrò oltre.
Conclusione: dai tre casi precedenti, possiamo confermare che per visualizzare correttamente le finestre X remote, sia la variabile 1. DISPLAY della macchina locale sia 2. l' -X
interruttore ssh devono essere impostati correttamente. Ovviamente, il server remoto dovrebbe consentire X11forwarding.