J'essaie d'ouvrir xterm
sur mon serveur distant (Ubuntu Server 10.04) avec ssh:
ssh -X name@machine xterm
mais l'erreur renvoyée est:
xterm Xt error: Can't open display: :0.0`
J'ai googlé et essayé tout ce que j'ai trouvé. Toujours avoir cette erreur. La variable DISPLAY doit être définie automatiquement, non?
Partie de sshd_config
:
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
Aucun conseil?
Si ssh peut établir la connexion, il va définir DISPLAY
sur la valeur appropriée. Puisque X11DisplayOffset
est défini sur 10 (valeur par défaut), ssh utilisera le premier affichage disponible commençant à 10. Si vous voyez une valeur inférieure à 10¹, alors quelque chose interfère avec le transfert X11 normal configuré par ssh, au moins. en remplaçant DISPLAY
name__. La valeur :0
(ou :0.0
, la partie située après le point n'a pas d'importance) indique le premier affichage démarré sur la machine, qui correspond généralement à la session active (ou à l'invite de connexion graphique) sur la console de la machine.
L'explication la plus probable du comportement observé est qu'un des fichiers de configuration de votre shell définit DISPLAY
name__. Le coupable le plus évident est ~/.bashrc
(qui, en raison d’un caprice de bash, est exécuté chaque fois que le parent de bash est rshd
ou sshd
name__, même si le shell n’est pas interactif). Un autre fichier qui définit les variables d'environnement est /etc/environment
. Si c'est le cas, la solution est évidente: ne définissez pas DISPLAY
ici. (Il existe très peu de cas dans lesquels vous devez définir DISPLAY
manuellement.)
Il y a d'autres explications exotiques. Cela peut se produire si vous avez modifié votre identifiant Shell en screen
(une idée sympa en théorie, mais non pratique) et que vous disposez d'un fichier d'initialisation de shell qui définit de manière forcée DISPLAY
à l'intérieur de l'écran (ce n'est pas une si bonne idée). Cela peut également arriver si vous avez configuré le serveur pour accepter les variables d'environnement envoyées par le client (directive AcceptEnv
dans sshd_config
), si le client envoie DISPLAY
et si la connexion X n'a pas pu être établie. Cela peut également arriver si vous définissez une variable d'environnement sur le serveur via la directive command
dans ~/.ssh/authorized_keys
. Ou xterm
pourrait être un script.
¹ Ou quelle que soit la valeur de X11DisplayOffset
se trouve dans la configuration du serveur, mais la valeur par défaut n’est pratiquement jamais modifiée.
Votre commande devrait fonctionner, ou du moins elle le fait pour moi. Essayez ceci à la place:
ssh -Y user@machine xterm
Modifier (1):
Essaye ça:
ssh -X user@machine env
Cela devrait montrer tout l'environnement. Il devrait y avoir diverses choses SSH dedans, et aussi DISPLAY. AFFICHAGE devrait être 10.0.
Vous pouvez aussi essayer ceci:
ssh -X user@machine DISPLAY=10.0 xterm
En plus de X11Forwarding yes
, j’avais également besoin d’ajouter
X11UseLocalhost no
dans /etc/ssh/sshd_config
comme décrit ici .
Le contrôle d’accès de X est probablement un obstacle.
Exécutez xhost +
(à partir du package x11-xserver-utils
) pour désactiver complètement le contrôle d'accès.
J'ai trouvé que xauth n'avait pas été installé.
Vérifiez également que X11 est installé sur le client. J'avais ce problème lorsque j'ai mis à niveau mon Mac vers OS X Mountain Lion. Mountain Lion supprime X11, vous devez donc l'installer à nouveau via le projet open source X Quartz. http://xquartz.macosforge.org/landing/