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é. J'obtiens toujours cette erreur. La variable DISPLAY doit être définie automatiquement, non?
Fait partie de sshd_config
:
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
Aucun conseil?
xterm
dans le terminal actuel avant ssh-ing?Réponses:
Si ssh est en mesure d'établir la connexion, il prendra
DISPLAY
la valeur appropriée. Puisque vous avezX11DisplayOffset
défini 10 (la valeur par défaut), ssh utilisera le premier affichage disponible à partir de 10. Si vous voyez une valeur inférieure à 10¹, alors quelque chose interfère avec le transfert X11 normal configuré par ssh, au moins par prioritaireDISPLAY
. La valeur:0
(ou:0.0
la partie après le point n'est pas pertinente) indique le premier affichage qui a été démarré sur la machine, qui dans des cas typiques est la session active (ou l'invite de connexion graphique) sur la console de la machine.L'explication la plus probable du comportement que vous observez est que l'un de vos fichiers de configuration de shell est défini
DISPLAY
. Le coupable le plus évident est~/.bashrc
(qui, en raison d'une bizarrerie de bash, est exécuté chaque fois que le parent de bash estrshd
ousshd
, même si le shell n'est pas interactif). Un autre fichier qui définit les variables d'environnement est/etc/environment
. Si tel est le cas, la solution est évidente: ne restez pasDISPLAY
là. (Il y a très peu de cas où vous devez définirDISPLAY
manuellement.)Il existe d'autres explications exotiques. Cela peut se produire si vous avez changé votre shell de connexion en
screen
(une idée mignonne en théorie, mais pas pratique) et que vous avez un fichier d'initialisation du shell qui se configure de force à l'DISPLAY
intérieur de l'écran (ce n'est pas une si bonne idée). Cela peut également se produire si vous avez configuré le serveur pour accepter les variables d'environnement envoyées par le client (AcceptEnv
directive danssshd_config
), le client envoieDISPLAY
et la connexion X n'a pas pu être établie. Ou cela peut se produire si vous définissez une variable d'environnement sur le serveur via lacommand
directive in~/.ssh/authorized_keys
. Ouxterm
pourrait être un script.¹ Ou quelle que soit la valeur de
X11DisplayOffset
est dans la configuration du serveur, mais elle n'est presque jamais modifiée par rapport à la valeur par défaut.la source
DISPLAY=localhost:11.0
dans monenv
, mais sa pertinence et si je devrais le changerDISPLAY 10.0
n'est pas claire.DISPLAY=:0 xterm
et j'obtiens toujours l'xterm: Xt error: Can't open display: :0
erreur, donc la variable d'environnement n'est pas le problème.Votre commande devrait fonctionner, ou du moins elle le fait pour moi. Essayez plutôt ceci:
Modifier (1):
Essaye ça:
Cela devrait montrer tout l'environnement. Il devrait y avoir diverses choses SSH, et également DISPLAY. L'AFFICHAGE doit être de 10,0.
Vous pouvez également essayer ceci:
la source
-Y
mais ça n'a pas marché non plus. Je reçois toujoursCan't open display: :0.0
localhost:10.0
Le contrôle d'accès de X est probablement un obstacle.
Exécutez
xhost +
(à partir du packagex11-xserver-utils
) pour désactiver complètement le contrôle d'accès.la source
En plus
X11Forwarding yes
, je devais aussi ajouterdans
/etc/ssh/sshd_config
comme décrit ici .
la source
J'ai trouvé que xauth n'avait pas été installé.
la source
Vérifiez également que X11 est installé côté client. J'obtenais 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/
la source
Vous devez d'abord ouvrir la connexion et une fois xterm ouvert.
la source
ssh -X name@machine
et après la connexion,xterm
j'obtiens la même erreur. Vouliez-vous dire cela? ;)ssh
fait la première connexion, puis xterm démarre dans cetssh
environnement. Donc, dans les deux cas, c'est à peu près la même chose que si vous utilisez d'ssh -X remote
abord, vous pouvez vérifier si vous vérifiez avececho $DISPLAY
pour vous assurer qu'il$DISPLAY
est correctement défini sur l'ordinateur distant après unssh -X
.