Как настроить ssh, чтобы разрешить указывать имя хоста/IP в переменной DISPLAY?

Проверьте свой /etc/resolv.conf и убедитесь, что у вас правильный DNS.

1
19.10.2018, 07:58
2 ответа

Краткое объяснение происходящего:

Пересылка X через sshсоздает локальный сокет протокола X -на удаленной машине (abc2 ), точно так же, как X-сервер на удаленной машине, а затем пересылает проводной протокол X через ssh -туннель к исходной машине (abc1 ). Локальный сокет определяется как localhost:10.0.

OTOH, дисплей abc1:0.0использует старый сетевой протокол X и ожидает, что X-сервер на abc1 будет прослушивать правильные порты. Это отключено по умолчанию в современных системах, потому что это очень небезопасно.

Итак, если ваша ситуация такова, что вы действительно хотите, чтобы приложение, работающее на abc2, использовало X-сервер, работающий на abc1, самый простой способ — запустить X-сервер на abc1 без опции -nolisten. Для этого вам нужно узнать, как X-сервер запускается (обычно менеджером дисплея, например, xdm/gdm/kdm/lightdm ), и изменить вызов запуска.

Следующее, что вам нужно сделать, это включить управление доступом. В изолированной сети просто используйте xhost +и разрешите все соединения; в противном случае вы можете использовать xauthи добавить текущий магический файл cookie MIT. Детали немного зависят от того, как именно настроен X-сервер на ваших машинах.

0
27.01.2020, 23:42

Если вы входите локально в abc1, это может быть неважно для вас... но если вы используете переадресацию SSH X11 для подключения со своей рабочей станции к abc1, вы также можете запустить вложенный X-сервер в abc1для захвата входящего соединения с abc1:0.0и передачи его на локальный X-сервер вашей рабочей станции в защищенном туннеле SSH X11.

В RHEL/CentOS 6 для этого необходимы RPM-пакеты xorg-x11-xserver-Xnestилиxorg-x11-xserver-Xephyr(более новой реализации, которые могут работать лучше ).

В основном:

  • иметь обычный X-сервер на abc1в состоянии по умолчанию, когда он не прослушивает TCP-соединения
  • иметь локальный X-сервер, работающий на вашей рабочей станции
  • установить соединение X11 -для переадресации SSH-соединения с вашей рабочей станции наabc1
  • запустить Xnestили Xephyrв фоновом режиме на abc1с соответствующими параметрами, чтобы заставить их слушать наabc1:0.0
  • запустите приложение.

Ссылаясь на комментарий @roaima к вопросу :, даже со старыми X-приложениями жесткое программирование параметра DISPLAY в приложении всегда было крайне неприятным делом.

Весьма вероятно, что вместо этого переменная DISPLAY установлена ​​в каком-то конфигурируемом месте. Например, это может быть указано в сценарии входа в систему учетной записи пользователя, которая используется для запуска приложения. Но если модификация считается модификацией приложения,тогда вам придется использовать предложенные обходные пути.

1
27.01.2020, 23:42

Теги

Похожие вопросы