Понимание переменной среды X Windows DISPLAY при туннелировании

9

Я хочу ssh для удаленных серверов, оба работают CentOSс X11Forwardingвключенным.

Однако приложение X не может работать должным образом на одном из них - на хосте B оно работает нормально. Но на AI хоста появляется сообщение об ошибке «Не удалось подключиться к дисплею» каждый раз, когда я запускаю приложение X.

После проверки DISPLAYпеременной среды на хосте A, которая, я думаю, связана с окном X, я нашел ее значение localhost:10.0. Следуя советам здесь , я изменяю, DISPLAY=0:10.0и это работает. Однако DISPLAYна хосте B все еще localhost:10.0и работает отлично.

У меня вопрос, что представляет собой значение в DISPLAY? В чем разница между localhost:10.0и 0:10.0?

Говорят, что localhostидентифицирует имя хоста. Затем, какой хост он идентифицирует: сервер (хост A / B), на котором запущено мое X-приложение, или мой локальный клиент, на котором я хочу, чтобы X-окно отображалось?

Будем благодарны за любые подсказки или указатели на документацию.

Summer_More_More_Tea
источник

Ответы:

5

Часть ответа можно найти здесь: /programming/746119/how-do-you-use-display-specifications

Переменная DISPLAY состоит в основном из 3 компонентов:

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

Что касается localhost aka 127.0.0.1 против 0.0.0.0 aka 0, вы можете взглянуть на этот пост:

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

Что объясняет разницу.

В вашем конкретном случае 0.0.0.0:10.0 и localhost: 10.0 будут иметь одинаковый эффект, но в основном будут означать:

  1. подключаться к любому интерфейсу, на котором настроен дисплей 10
  2. подключите по lo0 к слушателю дисплея 10.

Практически не было бы никакой разницы, поскольку в первом случае сканирование всех интерфейсов начиналось бы с lo0, который обычно является первым интерфейсом в списке.

Карлсон
источник
1
Сначала спасибо. Я нахожу реальную проблему, следуйте вашим советам. Настоящая проблема заключается в том, что на узле А localhostпривязан 192.168.1.200(какой-то конкретный IP-адрес. Я не хочу показывать свои настоящие настройки). Он также работает при экспорте DISPLAY=127.0.0.1:10.0. Переадресация X работает только на петлевом интерфейсе?
Summer_More_More_Tea
localhostэто специальное имя, которое связывается с интерфейсом обратной связи (lo0) в Linux, оно никогда не должно быть связано с реальным IP-адресом. На самом деле вы можете проверить привязку, запустив sudo netstat -apn | grep 6010SSH, который должен прослушивать этот порт для подключения дисплея. Насколько я могу сказать, это 127.0.0.1только.
Карлсон