Дякую @jensd, @unxnut за допомогу мені. на основі ваших коментарів я зміг розібратися в проблемі.
Для рішення потрібні два етапи:
- змінну DISPLAY слід правильно встановити.
- коли ssh'ing на віддалений сервер, перемикач -X повинен бути включений
у моїх попередніх спробах бракує однієї або обох цих двох умов.
Так чи інакше, для пізніших користувачів, які бачать це ось приклади, щоб показати вам, що я намагаюся сказати.
випадок1
на моїй локальній машині не буде встановлено змінної DISPLAY. І тоді я сш на віддалений сервер з перемикачем -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. Але коли я сшу, я не вмикаю перемикач -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
можна побачити інший результат (порівняйте зі випадком1). у випадку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 обидві 1. Змінна DISPLAY локальної машини та 2. ssh- -X
перемикач повинні бути правильно встановлені. Звичайно, віддалений сервер повинен дозволяти перенаправлення X11.