Как сделать переадресацию X11 на виртуальную машину, работающую на удаленном хосте Linux?

Я запускаю виртуальную машину на удаленном хосте Linux:

моя машина -> хост Linux -> виртуальная машина, работающая на хосте Linux

У меня включена переадресация X11 на хосте Linux и на виртуальной машине. Я пытаюсь запустить JVisualVM на виртуальной машине на моей собственной машине, запущенной с помощью команды ssh (с ssh -X).

Команда ssh, которую я использую:

ssh -X -t root@linux_host -L 29998:localhost:29999 ssh -X -t -i /root/.ssh/my_key user@virtual_machine -L 29999:localhost:9999

После подключения я устанавливаю переменную отображения с помощью:

DISPLAY=<my machine's ip address>:0.0

Затем я запускаю JVisualVM с этим, ожидая, что окно откроется на моей собственной машине:

/usr/java/jdk1.7.0_95/bin/jvisualvm -cp:a /opt/jboss/bin/client/jboss-cli-client.jar --jdkhome /usr/java/jdk1.7.0_95/

Но я либо получаю сообщение об ошибке, что дисплей не установлен, либо JVisual завершает работу через несколько секунд с кодом ошибки 2.


person user2533268    schedule 15.07.2016    source источник
comment
SuperUser.com был бы лучшим местом для этого вопроса.   -  person Barmar    schedule 15.07.2016


Ответы (2)


Поскольку вы используете ssh -X, вы, очевидно, ожидаете использовать безопасную пересылку X с ssh. В этом случае ssh должен установить для вас переменную DISPLAY, и вы НЕ должны переопределять ее, устанавливая DISPLAY вручную. Если DISPLAY не устанавливается ssh, это означает, что в настройках вашего сервера ssh отключена переадресация X (по какой-либо причине), и вы должны исправить это, если это вообще возможно.

Если вы не хотите (или не можете) использовать переадресацию ssh X, вы можете использовать прямое соединение (установив DISPLAY, как вы это делаете), но вам ТАКЖЕ нужно открыть X сервер на вашем компьютере для удаленных подключений. Вы делаете это с помощью xhost на локальной машине:

xhost <linux host address>

Обратите внимание, однако, что это открывает ваш локальный компьютер для ВСЕХ, имеющих доступ к этому хосту Linux, или для тех, кто может подделать этот адрес хоста (что означает практически всех везде, если только вы и машина Linux не находитесь внутри брандмауэра), так что это НЕ хорошая идея.

person Chris Dodd    schedule 15.07.2016

Попробуйте добавить

X11UseLocalHost нет

to

/etc/ssh/sshd_config

person Jay Shepherd    schedule 06.09.2016