ssh -X & ldquo; Xt error: невозможно открыть дисплей:: 0.0 & rdquo;

Я пытаюсь открыть xterm на своем удаленном сервере (Ubuntu Server 10.04) с помощью ssh:

ssh -X name@machine xterm

, но возвращается ошибка:

xterm Xt error: Can't open display: :0.0`

Я погуглил и перепробовал все что нашел. Все еще получаю эту ошибку. Переменная DISPLAY должна быть установлена ​​автоматически, верно?

Часть sshd_config:

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

Любой совет?

8
задан 5 September 2012 в 01:02

7 ответов

Как и X11Forwarding yes, мне также необходимо добавить

X11UseLocalhost no

в /etc/ssh/sshd_config

, как описано здесь .

0
ответ дан 5 September 2012 в 01:02

Если ssh может установить соединение, он установит для DISPLAY правильное значение. Так как для X11DisplayOffset установлено значение 10 (значение по умолчанию), ssh будет использовать первый доступный дисплей, начиная с 10. Если вы видите значение, которое меньше 10¹, то что-то мешает нормальной переадресации X11, установленной ssh, по крайней мере, переопределением DISPLAY. Значение :0 (или :0.0, часть после точки не имеет значения) указывает на первый дисплей, который был запущен на машине, который в типичных случаях является активным сеансом (или графическим приглашением для входа в систему) на консоли машины. [+1121]

Наиболее вероятное объяснение поведения, которое вы наблюдаете, заключается в том, что один из ваших файлов конфигурации оболочки устанавливает DISPLAY. Наиболее очевидным виновником является ~/.bashrc (который из-за причуды bash выполняется всякий раз, когда родителем bash является rshd или sshd, даже если оболочка не является интерактивной). Еще один файл, который определяет переменные среды - /etc/environment. Если это так, решение очевидно: не устанавливайте DISPLAY там. (Есть очень немного случаев, когда вам нужно установить DISPLAY вручную.)

Есть и другие экзотические объяснения. Это может произойти, если вы изменили оболочку входа в систему на screen (милая идея в теории, но не практическая), и у вас есть файл инициализации оболочки, который принудительно устанавливает DISPLAY на экране (не очень хорошая идея). Это также может произойти, если вы настроили сервер на прием переменных среды, отправленных клиентом (директива AcceptEnv в sshd_config), клиент отправляет DISPLAY, и X-соединение не может быть установлено. Или это может произойти, если вы установите переменную окружения на сервере с помощью директивы command в ~/.ssh/authorized_keys. Или xterm может быть сценарием.

¹ Или какое-либо значение X11DisplayOffset находится в конфигурации сервера, но вряд ли когда-либо изменится со значением по умолчанию.

0
ответ дан 5 September 2012 в 01:02

Контроль доступа к X, вероятно, в пути.

Запустите xhost + (из пакета x11-xserver-utils), чтобы полностью отключить контроль доступа.

0
ответ дан 5 September 2012 в 01:02

Ваша команда должна работать, или, по крайней мере, она работает для меня. Попробуйте вместо этого:

ssh -Y user@machine xterm

Редактировать (1):

Попробуйте:

ssh -X user@machine env

Это должно показать всю среду. Там должны быть различные вещи по SSH, а также DISPLAY. ДИСПЛЕЙ должен быть 10.0.

Вы также можете попробовать это:

ssh -X user@machine DISPLAY=10.0 xterm
0
ответ дан 5 September 2012 в 01:02

Вы должны сначала открыть соединение, а после установления открыть xterm.

0
ответ дан 5 September 2012 в 01:02

Я обнаружил, что xauth не был установлен.

0
ответ дан 5 September 2012 в 01:02

Кроме того, убедитесь, что у вас установлен X11 на стороне клиента. Я получил эту проблему, когда я обновил свой Mac до OS X Mountain Lion. Mountain Lion удаляет X11, поэтому вам придется установить его снова через проект X Quartz с открытым исходным кодом. http://xquartz.macosforge.org/landing/

0
ответ дан 5 September 2012 в 01:02

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

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