Я хочу запускать 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, мне кажется правильной, поэтому осталось два объяснения, которые я могу придумать:
Я не верю, что пересылка 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.