Merci à @jensd, @unxnut de m'avoir aidé. sur la base de vos commentaires, j'ai pu comprendre le problème.
La solution nécessitait deux étapes:
- la variable DISPLAY doit être correctement définie.
- lors de la connexion au serveur distant, le commutateur -X doit être activé
mes tentatives précédentes manquent d'une ou des deux conditions.
Quoi qu'il en soit, pour les utilisateurs ultérieurs qui voient cela, voici des exemples pour vous montrer ce que j'essaie de dire.
cas 1
ma machine locale n'aura pas de variable DISPLAY définie. Et puis je vais ssh sur le serveur distant avec le commutateur -X, puis j'essaierai de l'exécuter 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.
comme vous pouvez le voir, une erreur Error: Can't open display:
est affichée sur le terminal du serveur distant.
case2
cette fois, sur la machine locale, je spécifierai la variable DISPLAY. Mais quand je ssh'ing, je ne vais pas activer le commutateur -X. Le résultat sera un échec:
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 ~]$
au début, vous pouvez voir que j'ai correctement défini la variable DISPLAY. Mais même ainsi, après ssh'ing (sans le commutateur -X) la xclock n'est pas exécutée.
* Un résultat différent avec setenv | grep DISPLAY
peut être vu ici (comparer avec le cas 1). dans case2, le résultat est juste vide. d'un autre côté, le résultat de case1 sur cette ligne de commande est DISPLAY: undefined variable
.... Je ne sais pas comment cette différence est provoquée mais je reçois un pressentiment qui est lié au fait que vous ayez satisfait à la condition 1. ou 2 .
case3
cette fois, je spécifierai correctement la variable DISPLAY sur la machine locale et également ssh sur le serveur distant avec mon commutateur -X activé.
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 ~]$
avec ce réglage, ça xclock
marche !! voici une capture d'écran pour prouver que je ne mens pas.
l'horloge est affichée avec succès sur ma machine locale.
Encore une fois, consultez le résultat de setenv | grep DISPLAY
dans ce cas. Ça se voit maintenant DISPLAY=localhost:11.0
. D'après ce que je sais, cela est lié à MIT-MAGIC-COOKIE dans le fichier .Xauthority, mais comme je n'en sais pas grand-chose, je n'irai pas plus loin.
Conclusion: à partir des trois cas ci-dessus, nous pouvons confirmer que pour que X Windows distant s'affiche correctement, 1. la variable DISPLAY de la machine locale et 2. le -X
commutateur ssh doivent être correctement définis. Bien sûr, le serveur distant doit autoriser le transfert X11.