Пересылка X11 с одним прыжком без установленного X-сервера
проблема
Я хочу запускать X-приложения удаленно на машине C с моего клиента A. Единственный способ подключиться к этой машине - использовать машину B (межсетевой экран) в качестве прыжка:
A -> B -> C
Пока что простой 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)
используемые машины
- A: Ноутбук Arch Linux 3.13.7-1-ARCH под управлением X-server/gnome
- B: Debian 6 Linux 2.6.32-5-amd64 pc без установленного / запущенного X-сервера
- C: OpenSuse 13.1 3.11.10-7-настольный ПК под управлением X-server/gnome
заключение
Я не уверен, существует ли проблема из-за моей конфигурации / настройки, или это не будет словом вообще... Буду признателен, если кто-нибудь с подобной проблемой / опытом поможет мне!
3 ответа
Я не верю, что пересылка X11 будет работать в описанном сценарии с несколькими переходами.
Однако, если вы сначала установите ssh-соединение A->B с переадресацией портов на C:22, а затем подключитесь к C с переадресацией X11 через установленное "прямое" соединение, которое должно работать нормально.
Что-то вроде следующего:
A $ ssh -L2200:C:22 -N B
(возможно, положить это на задний план)
с последующим:
A $ ssh -X -p2200 localhost
Если вы используете 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, выглядит для меня корректной, поэтому осталось два объяснения, о которых я могу подумать:
- У вас не было переменной DISPLAY в оболочке, где вы ввели команду ssh.
- Сервер ssh на C настроен так, чтобы запретить пересылку X11. Вам нужно "X11Forwarding yes" в sshd_config на C, иначе это не будет работать.
В строке настройки нескольких переходов, при которой переадресация X11 требует xauth на каждой машине. Это единственное приложение X11, которое вам нужно на компьютере B. Компьютер A - это единственный компьютер, которому требуется X-сервер. Машина C, конечно, нуждается в ваших приложениях X11, но не нуждается в X-сервере. Теоретически вы могли бы сделать это даже без приложений X11 на компьютере A.