Назад | Перейти на главную страницу

Перенаправление X11 с одним прыжком без установленного X-сервера

проблема

Я хочу запускать X-приложения удаленно на машине C с моего клиента A. Единственный способ подключиться к этой машине - использовать машину B (брандмауэр) в качестве перехода:

А -> В -> С

Пока что простой ssh ​​работает так, как ожидалось, однако я не могу запустить перенаправление X11.

Я нашел несколько похожих вопросов, но я думаю, что все они предполагают, что X11 работает на B. Решения вроде Как включить перенаправление SSH X11 через дополнительный сервер? похоже, не работает с моей настройкой.

Может быть, вам нужен X-сервер, работающий на B, для пересылки X11 от C к B и от B к A?

настроить

Я настроил свой ~. / Ssh / ssh_config на A в соответствии с этой статьей: http://sshmenu.sourceforge.net/articles/transparent-mulithop.html

Когда я пытаюсь подключиться и переслать X11 с C с помощью

$A: ssh -X C

Я подключаюсь к C через B, но без пересылки X11 (хотя и включен на B и C):

$C: echo $DISPLAY

$C: glxgears 
Error: couldn't open display (null)

машины подержанные

вывод

Я не уверен, существует ли проблема из-за моей конфигурации / настройки, или это не было бы словом в целом ... Я был бы признателен, если бы кто-нибудь с подобной проблемой / опытом мог бы мне помочь!

Если вы используете ProxyCommand, не используйте -X для ProxyCommand. ProxyCommand должен оставить все расширенные функции отключенными, вам нужен только минимум для ProxyCommand.

При использовании ProxyCommand для ssh от A к B и подключении к порту 22 на C с помощью nc, клиент ssh на A будет взаимодействовать с ssh-сервером на C. Смысл этого заключается в том, что ничего, что происходит на B, может повлиять на то, какие функции вы можете использовать между A и C. Для B было бы невозможно иметь какое-либо влияние, поскольку сообщение зашифровано, когда оно проходит через B.

Объяснение того, почему пересылка X11 не работает для вас, должно быть найдено на A или C. Команда, которую вы набрали на A, мне кажется правильной, поэтому осталось два объяснения, которые я могу придумать:

  1. У вас не было переменной DISPLAY в оболочке, в которой вы набрали команду ssh.
  2. Сервер ssh на C настроен на запрет пересылки X11. Вам нужно «X11Forwarding yes» в sshd_config на C, иначе это не сработает.

Я не верю, что пересылка X11 будет работать в описанном сценарии с несколькими переходами.

Однако, если вы сначала должны установить ssh-соединение A-> B с перенаправлением порта на C: 22, а затем подключиться к C с перенаправлением X11 через установленное «прямое» соединение, это должно работать нормально.

Примерно так:

A $ ssh -L2200:C:22 -N B (возможно, отложив это на задний план)

с последующим:

A $ ssh -X -p2200 localhost

В строке настройки с несколькими переключениями, в которой с перенаправлением X11 вам нужен xauth на каждой машине. Это единственное приложение X11, которое вам нужно на машине B. Машина A - единственная машина, которая нуждается в X-сервере. Машине C, конечно, нужны ваши приложения X11, но не нужен X-сервер. Теоретически вы могли бы сделать это даже без приложений X11 на машине A.