Grundlegendes zur X Windows DISPLAY-Umgebungsvariablen beim Tunneln

9

Ich möchte ssh zu Remote-Servern, die beide CentOSmit X11Forwardingaktiviertem ausgeführt werden.

Die X-Anwendung kann jedoch auf einem von ihnen nicht ordnungsgemäß ausgeführt werden - auf Host B funktioniert sie einwandfrei. Aber auf der Host-KI wird bei jedem Start der X-Anwendung der Fehler "Verbindung zur Anzeige konnte nicht hergestellt werden" angezeigt.

Nachdem DISPLAYich die Umgebungsvariable auf Host A überprüft hatte, von der ich glaube, dass sie mit dem X-Fenster zusammenhängt, fand ich ihren Wert localhost:10.0. Wenn ich den Tipps hier folge , ändere ich mich DISPLAY=0:10.0und es funktioniert. Auf DISPLAYHost B ist jedoch immer noch localhost:10.0und funktioniert gut.

Meine Frage ist, was bedeutet der Wert in DISPLAY? Was ist der Unterschied zwischen localhost:10.0und 0:10.0?

Es wird gesagt, dass localhostein Hostname identifiziert. Welchen Host identifiziert es dann, den Server (Host A / B), auf dem meine X-Anwendung ausgeführt wird, oder meinen lokalen Client, auf dem das X-Fenster angezeigt werden soll?

Hinweise oder Hinweise zur Dokumentation sind willkommen.

Summer_More_More_Tea
quelle

Antworten:

5

Ein Teil der Antwort ist tatsächlich hier zu finden: /programming/746119/how-do-you-use-display-specifications

Die Variable DISPLAY besteht im Wesentlichen aus 3 Komponenten:

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

Was localhost aka 127.0.0.1 vs. 0.0.0.0 aka 0 betrifft, können Sie sich diesen Beitrag ansehen:

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

Das erklärt den Unterschied.

In Ihrem speziellen Fall hätten 0.0.0.0:10.0 und localhost: 10.0 den gleichen Effekt, bedeuten aber im Grunde:

  1. Verbinden Sie sich mit einer beliebigen Schnittstelle, auf der das Display 10 eingerichtet ist
  2. Verbinden Sie auf lo0 mit dem Listener von Display 10.

Praktisch würde es keinen Unterschied geben, da im ersten Fall der Scan aller Schnittstellen mit lo0 beginnen würde, was normalerweise die erste Schnittstelle in der Liste ist.

Karlson
quelle
1
Zuerst danke. Ich finde das eigentliche Problem, folge deinen Tipps. Das eigentliche Problem ist, dass localhostes 192.168.1.200auf Host A gebunden ist (eine bestimmte IP wie diese. Ich möchte meine echte Konfiguration nicht verfügbar machen.). Es funktioniert auch beim Export DISPLAY=127.0.0.1:10.0. Funktioniert die X-Weiterleitung nur auf der Loopback-Schnittstelle?
Summer_More_More_Tea
localhostist ein spezieller Name, der an eine Loopback-Schnittstelle (lo0) unter Linux gebunden ist und niemals an eine echte IP-Adresse gebunden werden sollte. Sie können die Bindung tatsächlich überprüfen, indem Sie sudo netstat -apn | grep 6010Ihren SSH ausführen, der an diesem Port auf die Anzeigeverbindung wartet. Soweit ich das beurteilen kann ist es 127.0.0.1nur.
Karlson