ssh -X “Xt ошибка: Не удается открыть дисплей: :0.0”

Вопрос или проблема

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

ssh -X имя@машина xterm

но возвращаемая ошибка:

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

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

Часть sshd_config:

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

Есть какие-либо советы?

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

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

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

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

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

ssh -Y user@machine xterm

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

Попробуйте это:

ssh -X user@machine env

Это должно показать все переменные окружения. Там должны быть различные SSH вещи, а также DISPLAY. DISPLAY должен быть 10.0.

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

ssh -X user@machine DISPLAY=10.0 xterm

Кроме X11Forwarding yes, мне также нужно было добавить

X11UseLocalhost no

в /etc/ssh/sshd_config

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

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

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

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

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

Возможно, подключения X11 для пользователя, пытающегося запустить xterm, не допускаются, исправьте это, запустив следующую команду на хост-машине:

xhost +si:localuser:mininet

Не забудьте исправить проблему с файлом ~/.Xauthority.

Сначала необходимо установить соединение, а после его установления открыть xterm.

Ответ или решение

Решение проблемы с ошибкой "Can’t open display: :0.0" при использовании SSH с X11 Forwarding

При работе с SSH для запуска графических приложений на удаленном сервере с использованием X11 Forwarding, нередко возникают ошибки, подобные "Xt error: Can’t open display: :0.0". Данная проблема может быть вызвана множеством факторов. В этой статье подробно рассмотрены возможные причины и способы их устранения.

1. Проверка конфигурации SSH

Прежде всего, убедитесь, что в файле конфигурации SSH-сервера (/etc/ssh/sshd_config) включено следующее:

X11Forwarding yes
X11DisplayOffset 10

Вы также можете добавить строку:

X11UseLocalhost no

Это может помочь, если у вас возникают проблемы с локальным подключением. После внесения изменений в конфигурацию, обязательно перезапустите демон SSH:

sudo service ssh restart

2. Переменная окружения DISPLAY

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

ssh -X user@machine env

Вы должны увидеть значение DISPLAY, равное 10.0 или близкое к этому. Если оно установлено на :0.0, это указывает на то, что переменная переопределена и передает данные с локального компьютера.

Чтобы временно установить DISPLAY вручную, используйте следующую команду:

ssh -X user@machine DISPLAY=10.0 xterm

3. Проверка на наличие xauth

Убедитесь, что пакет xauth установлен на сервере. Этот инструмент отвечает за установление и управление авторизацией для X11. Вы можете установить его с помощью команды:

sudo apt-get install xauth

4. Отключение контроля доступа X

Иногда ошибка может быть связана с контролем доступа к X-серверу. Чтобы отключить этот контроль, выполните следующую команду на удаленном сервере:

xhost +

Это полностью отключает доступ, что может быть небезопасно, поэтому лучше всего определить конкретного пользователя:

xhost +si:localuser:username

5. Установка X-сервера на клиенте

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

6. Проверка конфигурации и прав доступа

Убедитесь, что у вас есть необходимые права доступа для запуска графических приложений. При необходимости, проверьте файл ~/.Xauthority пользователя, под которым вы подключаетесь. Если нужно, удалите или перенастройте его.

7. Использование SSH с опцией -Y

Если все вышеперечисленное не помогло, попробуйте использовать более безопасный параметр -Y вместо -X:

ssh -Y user@machine xterm

Этот ключ позволяет делать доверенные соединения, что может помочь избежать проблем с отображением.

Заключение

Ошибка "Can’t open display: :0.0" может быть вызвана многими факторами, связанными с как конфигурацией сервера, так и клиентского окружения. Следуя предложенным рекомендациям, вы сможете диагностировать и исправить проблемы с X11 Forwarding. Если у вас возникли трудности даже после выполнения всех шагов, рассмотрите возможность обращения к системному администратору или технической поддержке для получения дополнительных указаний.

Оцените материал
Добавить комментарий

Капча загружается...