Откройте программу Java от SSH в дисплей VNC

Если у меня есть система Ubuntu 12.04, которая имеет LXDE и установленный TightVNCserver и выполняет сессию на порте :1 (не туннелировал через SSH), и активное соединение SSH, затем как я могу использовать SSH для запуска программы, для которой нужен активный дисплей для использования tightVNC доступной сессии?

Я хотел использовать SSH для запуска файла Java, который обычно запускается прекрасный при запуске в vnc сессии, но я получаю ошибку:

xxx@yyy:~# java zzz
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at sun.awt.HeadlessToolkit.getScreenSize(HeadlessToolkit.java:282)
        at zzz.<clinit>(zzz.java:35)

Перефразировать его: Я хочу запустить программу и позволить ей использовать открыть окно сессии VNC, не используя клиентскую сессию средства просмотра VNC для запуска его, это может быть сделано?

(Я думаю любая программа, для которой нужен дисплей, реагировал бы тот путь, таким образом, я думаю, что это не большая часть вопроса о Java, но ssh/vnc один),

1
задан 21 November 2014 в 11:30

3 ответа

Попытайтесь установить DISPLAY переменная к X-серверу сессии VNC:

DISPLAY=:1 java xxx
2
ответ дан 10 November 2019 в 08:43

Необходимо будет включить передачу X11, это передаст ее собственному серверу X11 (таким образом, Вам будет нужно выполнение сервер X11 на клиенте, Вы - SSHing от).

Это может быть сделано путем добавления -X к команде SSH. Пример: ssh -X user@server

Тогда удостоверяются, что переменная $DISPLAY установлена на требуемый дисплей. Проверьте это с echo $DISPLAY

, Если то, чего Вы пытаетесь достигнуть, получит доступ к открыть Window на Вашем сервере X11 через SSH, я предложу смотреть на это: http://www.wensley.org.uk/x

Это объясняет, как достигнуть поведения similiar для 'экранирования', но с приложениями X11.

2
ответ дан 10 November 2019 в 08:43

Думаю, здесь можно сделать несколько вещей, один из которых — использовать команду ssh -X.

Тем не менее, мне нравится подход с запуском VNC-сервера (например, tightvnc) на хосте, к которому вы пытаетесь подключиться. Затем вы можете ssh подключиться к этому хосту и использовать программу просмотра vnc для отображения, если вам это нужно. На терминале ssh подключитесь к хосту vnc и перенаправьте его порт 5901 (при условии, что ваш сервер tightvnc прослушивает порт 5901) на локальный порт 5901.

ssh -L 5901:127.0.0.1:5901 -C user@192.168.186.111

И на другом терминале подключитесь к переадресованному порту для просмотра X11:

vncviewer localhost:5901

Теперь, когда вы запускаете команду, которая дает вам ошибку, потому что ваша переменная DISPLAY не установлена. Вы можете установить его, набрав export DISPLAY=:N на своем терминале ssh. Примечание. N обычно равно 1, но для проверки вы можете открыть терминал в окне x11-vnc и ввести echo $DISPLAY, N — любое значение отображается здесь.

0
ответ дан 7 June 2020 в 22:12

Другие вопросы по тегам:

Похожие вопросы: