ssh -X "Erreur Xt: impossible d'ouvrir l'affichage:: 0,0"

9

J'essaie d'ouvrir xtermsur 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?

Fabien
la source
Pouvez-vous exécuter xtermdans le terminal actuel avant ssh-ing?
enzotib
@belacqua: ce n'est pas obligatoire. Je me connecte généralement à un serveur sans tête distant et je peux facilement exécuter des applications X distantes sur le serveur X local.
enzotib
@enzotib - merci; Je ne le savais pas.
belacqua
@enzotib désolé, je n'ai pas vu votre commentaire. Oui, je peux ouvrir xterm sur ma machine locale
Fabian

Réponses:

8

Si ssh est en mesure d'établir la connexion, il prendra DISPLAYla valeur appropriée. Puisque vous avez X11DisplayOffsetdé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 prioritaire DISPLAY. La valeur :0(ou :0.0la 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 est rshdou sshd, 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 pas DISPLAYlà. (Il y a très peu de cas où vous devez définir DISPLAYmanuellement.)

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' DISPLAYinté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 ( AcceptEnvdirective dans sshd_config), le client envoie DISPLAYet 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 la commanddirective in ~/.ssh/authorized_keys. Ou xtermpourrait être un script.

¹ Ou quelle que soit la valeur de X11DisplayOffsetest dans la configuration du serveur, mais elle n'est presque jamais modifiée par rapport à la valeur par défaut.

Gilles 'SO- arrête d'être méchant'
la source
1
il serait utile de répertorier les moyens de résoudre les divers problèmes que vous mentionnez.
George Stocker le
@GeorgeStocker Tous ces problèmes sont de la forme «il y a un paramètre dans un fichier de configuration», donc la solution pour tous ces problèmes est de supprimer ou de modifier le paramètre. Y en a-t-il un en particulier que vous pouvez identifier mais pas corriger?
Gilles 'SO- arrête d'être méchant'
Je vois DISPLAY=localhost:11.0dans mon env, mais sa pertinence et si je devrais le changer DISPLAY 10.0n'est pas claire.
George Stocker le
@GeorgeStocker Vos symptômes ne correspondent donc pas à cette question. J'ai mis à jour ma réponse pour préciser que 10 est la valeur seuil en dessous de laquelle cette réponse s'applique. 11 est une valeur attendue ici (probablement la deuxième connexion SSH active avec le transfert X).
Gilles 'SO- arrête d'être méchant'
Je cours DISPLAY=:0 xtermet j'obtiens toujours l' xterm: Xt error: Can't open display: :0erreur, donc la variable d'environnement n'est pas le problème.
Dan Dascalescu
3

Votre commande devrait fonctionner, ou du moins elle le fait pour moi. Essayez plutôt ceci:

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, et également DISPLAY. L'AFFICHAGE doit être de 10,0.

Vous pouvez également essayer ceci:

ssh -X user@machine DISPLAY=10.0 xterm
ed.
la source
Je l'ai essayé avec -Ymais ça n'a pas marché non plus. Je reçois toujoursCan't open display: :0.0
Fabian
Quelle est votre machine locale en cours d'exécution? Le: 0.0 est en ce qui concerne, car il est la valeur par défaut pour un locale serveur X, pas une seule télécommande ...
ed.
J'utilise Ubuntu 10.04, Linux Mint 11 ou Mac OS X 10.7. L'utilisation dépend de l'emplacement (travail / domicile), mais l'erreur est tout de même
Fabian
Je vais modifier la réponse ... (1)
éd.
Ma variable DISPLAY estlocalhost:10.0
Alexis Wilke
2

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.

Geert
la source
2

En plus X11Forwarding yes, je devais aussi ajouter

X11UseLocalhost no

dans /etc/ssh/sshd_config

comme décrit ici .

user2400538
la source
1

J'ai trouvé que xauth n'avait pas été installé.

Allen
la source
0

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/

Paul Maunders
la source
-1

Vous devez d'abord ouvrir la connexion et une fois xterm ouvert.

animaletdesequia
la source
Merci pour votre réponse. Que voulez-vous dire par «ouvrir une connexion»? Lorsque j'utilise ssh -X name@machine et après la connexion, xtermj'obtiens la même erreur. Vouliez-vous dire cela? ;)
Fabian
Non, cela devrait également fonctionner sans connexion préalable.
enzotib
@Fabian - Je pense que c'est ce qu'il voulait dire.
belacqua
Je pense qu'une connexion VNC est nécessaire.
nanofarad
@enzotib, eh bien ... c'est en sshfait la première connexion, puis xterm démarre dans cet sshenvironnement. Donc, dans les deux cas, c'est à peu près la même chose que si vous utilisez d' ssh -X remoteabord, vous pouvez vérifier si vous vérifiez avec echo $DISPLAYpour vous assurer qu'il $DISPLAYest correctement défini sur l'ordinateur distant après un ssh -X.
Alexis Wilke