Спасибо @jensd, @unxnut за помощь. на основе ваших комментариев я смог выяснить проблему.
Решение потребовало двух шагов:
- переменная DISPLAY должна быть правильно установлена.
- при подключении к удаленному серверу ключ -X должен быть включен
в моих предыдущих попытках отсутствует одно или оба из этих двух условий.
В любом случае, для более поздних пользователей, которые видят это здесь, есть примеры, чтобы показать вам, что я пытаюсь сказать.
Случай 1
моя локальная машина не будет иметь установленную переменную DISPLAY. И тогда я сделаю ssh на удаленном сервере с ключом -X и затем попробую выполнить xclock
.
Black@Black-PC ~
$ echo $DISPLAY
## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.
как видите, ошибка Error: Can't open display:
отображается на удаленном сервере терминала.
Вариант 2
на этот раз на локальной машине я укажу переменную DISPLAY. Но когда я ssh'ing, я не буду включать ключ -X. Результатом будет сбой:
Black@Black-PC ~
$ export DISPLAY=:0.0
Black@Black-PC ~
$ echo $DISPLAY
:0.0
Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$
в начале вы можете видеть, что я правильно установил переменную DISPLAY. Но даже в этом случае после ssh'ing (без ключа -X) xclock не выполняется.
* Здесь setenv | grep DISPLAY
можно увидеть другой результат (сравните с case1). в случае 2 результат просто пуст. с другой стороны, результат case1 для этой командной строки DISPLAY: undefined variable
... Я не уверен, как это различие вызвано, но я догадываюсь, что это связано с тем, выполнили ли вы условие 1 или 2 ,
Вопрос 3
на этот раз я правильно укажу переменную DISPLAY на локальном компьютере, а также ssh на удаленный сервер с включенным ключом -X.
Black@Black-PC ~
$ echo $DISPLAY
:0.0
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$
с этой настройкой xclock
работает !! вот скриншот, чтобы доказать, что я не вру.
xclock успешно показывается на моей локальной машине.
Опять же, проверьте результат setenv | grep DISPLAY
в этом случае. Это сейчас показывает DISPLAY=localhost:11.0
. Из того, что я знаю, это связано с MIT-MAGIC-COOKIE в файле .Xauthority, но так как я не знаю много об этом, я не буду идти дальше.
Вывод: из трех приведенных выше случаев мы можем подтвердить, что для правильного отображения удаленного X Windows, -X
необходимо правильно установить и переменную 1. DISPLAY локальной машины, и 2. переключатель ssh . Конечно, удаленный сервер должен разрешить пересылку X11.