1

Фон:

Я помогаю создать медиа-стену из запасных компьютеров / экранов для местного университета, чтобы использовать processing.org/java для распределения визуализации по нескольким машинам. Тем не менее, он все еще глючит, и мне нужно время от времени перезапускать клиентов.

Проблема:

В настоящее время у меня возникают проблемы с выяснением того, как перезапустить клиентское Java-приложение удаленно с сервера. Примечание: клиенты подключаются напрямую к двум экранам, а не выводятся без монитора

Расследование:

Я воссоздал похожую среду на AWS/EC2, где я могу заставить работать модель клиент-сервер, но просто не могу запустить клиент GUI удаленно. Я продолжаю получать:

Не могу открыть Дисплей.

Конкретная проблема:

В настоящее время я использую следующее с сервера:

ssh ubuntu @ guiclient1 "экспорт DISPLAY =:0; cd ~/wallclient/; xclock &"

Дополнительно:

Я контролирую тот же рабочий стол guiclient1, используя x2go. Я не делал какой-либо конкретной конфигурации xauth / xhost - так как еще не видел проблем, связанных с этим.

Что я должен настроить по-другому? Я не нашел большой помощи в Интернете - я не хочу переадресовывать порт обратно на сервер, на что большинство вопросов отвечают.

Спасибо

1 ответ1

0

Для прямого подключения в X по сети

X имеет модель разрешений, позволяющую удаленным клиентам {*} использовать определенный дисплей. Прочитайте man- страницу для xhost , но короткая версия

server$ xhost remote_client

интерактивно разрешить remote_client использовать ваш экран.

Затем на клиенте вы просто запускаете

client$ xeyes

Прямой ssh

Подключение через ssh - это другое дело. Вы должны использовать -X или -Y или установить соответствующие значения в .ssh/config (ForwardX11 для -X). Ваш ssh-клиент должен затем установить правильное значение для DISPLAY и вы не должны связываться с ним.

server$ ssh -X client
client(by ssh)$ printenv DISPLAY
localhost:10.0
client(by ssh)$ xeyes

Туннелирование ssh

Откройте туннель через брандмауэр с чем-то вроде

server$ ssh -X -L 1111:client:22 user@firewall

тогда в другой оболочке

server$ ssh -X -p 1111 user@localhost
client(by ssh)$ printenv DISPLAY
localhost:10.0
client(by ssh tunnel)$ xeyes

(снова обратите внимание на -X ), чтобы открыть оболочку, работающую в месте destination . Как и в случае прямого соединения ssh, ваша переменная DISPLAY должна быть установлена для вас.


{*} Здесь я следую традиции X, утверждая, что компьютер, на котором происходит отображение, является сервером, поскольку он делает его доступным для нескольких программ, работающих на клиентских машинах.

Возможно, это покажется задом наперед, так как вы, вероятно, привыкли к машине, на которой вы работаете, чтобы быть "клиентом", а та, которая спрятана в шкафу, является "сервером".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .