
Я вошел на удаленный сервер и пытаюсь открыть приложение 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 за помощь. Благодаря вашим комментариям я смог разобраться в проблеме.
Решение требовало двух шагов:
- Переменная DISPLAY должна быть правильно установлена.
- при подключении по 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 xorg
Firefox начал работать.