Дело 1

Дело 1

Я вошел на удаленный сервер и пытаюсь открыть приложение x (например, Firefox). Но появляется сообщение об ошибке. Ниже приведены мои попытки открыть Firefox.

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.

Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ 

Я использовал -X, -Y, потому что где-то прочитал, что эти две опции связаны с учетными данными относительно X11, и эти переключатели сделают работу за меня. Даже без переключателей -X, -Y моя попытка не удалась.

Что означает ошибка «дисплей не указан»?

PS Странно то, что если я подключаюсь к удаленному серверу через PUTTY и повторяю команду 'firefox', то это работает?!?!(firefox отображается на локальном компьютере)

PS Мой локальный компьютер — Windows 7, поэтому у меня Xming запущен в фоновом режиме, чтобы разрешить отображение X11. Что касается попытки, написанной в верхней части, команды были введены в терминале Cygwin.

решение1

Я только что столкнулся с этой проблемой при подключении к серверу RHEL7 без графического интерфейса.

Для настройки переменной DISPLAY и правильной авторизации на вашем хосте должен быть установлен пакет xorg-x11-xauth.

Надеюсь, я сэкономил кому-то время.

решение2

Убедитесь, что в вашей среде cygwin установлена ​​переменная DISPLAY:

export DISPLAY=:0.0

После подключения по SSH проверьте, знает ли эта оболочка правильную переменную DISPLAY, выполнив:

echo $DISPLAY

решение3

Спасибо @jensd, @unxnut за помощь. Благодаря вашим комментариям я смог разобраться в проблеме.

Решение требовало двух шагов:

  1. Переменная DISPLAY должна быть правильно установлена.
  2. при подключении по ssh к удаленному серверу ключ -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, я не включу ключ -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). В case2 результат просто пустой. С другой стороны, результат 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.

решение4

У меня была похожая проблема с системой на базе Debian (proxmox), и проблема была в том, что xorg не был установлен. После того, как apt-get install xorgFirefox начал работать.

Связанный контент