Comprendre la variable d'environnement X Windows DISPLAY lors du tunneling

9

Je veux ssh vers des serveurs distants, tous deux fonctionnant CentOSavec X11Forwardingactivé.

Cependant, l'application X ne peut pas fonctionner correctement sur l'un d'eux - sur l'hôte B, cela fonctionne bien. Mais sur l'IA hôte, l'erreur "Impossible de se connecter à l'affichage" s'affiche à chaque fois que je lance l'application X.

Après avoir vérifié la DISPLAYvariable d'environnement sur l'hôte A qui, je pense, est liée à la fenêtre X, j'ai trouvé sa valeur localhost:10.0. En suivant les conseils ici , je change DISPLAY=0:10.0et ça marche. Cependant, DISPLAYsur l'hôte B est toujours localhost:10.0et fonctionne bien.

Ma question est, que DISPLAYreprésente la valeur en ? Quelle est la difference entre localhost:10.0et 0:10.0?

On dit qu'il localhostidentifie un nom d'hôte. Ensuite, quel hôte identifie-t-il, le serveur (hôte A / B) sur lequel mon application X s'exécute ou mon client local où je veux que la fenêtre X s'affiche?

Tous les conseils ou pointeurs vers la documentation seraient appréciés.

Summer_More_More_Tea
la source

Réponses:

5

Une partie de la réponse peut être trouvée ici: /programming/746119/how-do-you-use-display-specifications

La variable DISPLAY comprend essentiellement 3 composants:

<host>:<display>[.<screen>]

En ce qui concerne localhost aka 127.0.0.1 vs. 0.0.0.0 aka 0, vous pouvez jeter un œil à ce post:

/server/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

Ce qui explique la différence.

Dans votre cas particulier, 0.0.0.0:10.0 et localhost: 10.0 auraient le même effet mais signifieraient essentiellement:

  1. se connecter sur n'importe quelle interface sur laquelle l'écran 10 est configuré
  2. se connecter sur lo0 à l'auditeur de l'écran 10.

Pratiquement, il n'y aurait aucune différence puisque dans le premier cas, l'analyse de toutes les interfaces commencerait par lo0, qui est normalement la première interface de la liste.

Karlson
la source
1
Merci d'abord. Je trouve le vrai problème suivez vos conseils. Le vrai problème est qu'il localhostest lié 192.168.1.200(une adresse IP spécifique comme celle-ci. Je ne veux pas exposer ma configuration réelle.) Sur l'hôte A. Cela fonctionne également lors de l'exportation DISPLAY=127.0.0.1:10.0. Le transfert X fonctionne-t-il uniquement sur l'interface de bouclage?
Summer_More_More_Tea
localhostest un nom spécial qui se lie à une interface de bouclage (lo0) sous Linux, il ne doit jamais être lié à une véritable adresse IP. Vous pouvez réellement vérifier la liaison en exécutant sudo netstat -apn | grep 6010votre SSH devrait écouter sur ce port la connexion d'affichage. Pour autant que je sache, c'est 127.0.0.1seulement.
Karlson