Вопрос или проблема
Я пытаюсь запустить программу после включения перенаправления портов X windows.
Мой файл sshd_config в /etc/ssh/sshd_config настроен следующим образом:
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
и мой файл ssh_config в /etc/ssh/ssh_config имеет:
Host *
ForwardAgent yes
ForwardX11 yes
Я пытаюсь включить перенаправление портов X Windows с помощью
lemon:~ # ssh -X localhost
lemon:~ # echo $DISPLAY
lemon:~ # /usr/bin/SMclient
xdpyinfo: unable to open display "".
Unable to launch GUI due to X server display setting problem, Exiting .
Таким образом, $DISPLAY не установлен. Я попробовал все, что видел в интернете. Изначально не было файла .Xauthority, поэтому я скопировал из
/var/run/gdm/auth-for–/database
и переименовал файл в .Xauthority
Затем я попробовал
lemon:~ # xauth generate :0 . trusted
Invalid MIT-MAGIC-COOKIE-1 keyxauth: (argv):1: unable to open display ":0".
Когда это не сработало, я удалил старый файл .Xauthority и затем:
lemon:~ # touch ~/.Xauthority
lemon:~ # xauth generate :0 . trusted
No protocol specified
xauth: (argv):1: unable to open display ":0".
И многие другие предлагали запустить host +, что просто приводит к
lemon:~ # xhost +
xhost: unable to open display ""
Вместе со всем вышеперечисленным на macOS13 Ventura вы должны:
В Системных настройках, Общие, Разрешить в фоновом режиме, XQuartz должен быть включен.
Ответ или решение
Конечно, давайте рассмотрим эту проблему более детально и предложим решение, используя методу FOREST: Focus, Empathy, Reverence, Education, Simplicity, Trust.
Фокус: Описание проблемы
Вы сталкиваетесь с проблемой подключения X Window с использованием X11-перенаправления через SSH. Программа выдает ошибку xdpyinfo: unable to open display ""
, что указывает на проблемы в настройке переменной окружения $DISPLAY
, и вы не можете запустить графический интерфейс. Настройки файлов sshd_config
и ssh_config
кажутся корректными, однако это не решает проблему.
Эмпатия: Осознание вашей ситуации
Вероятно, это вызывает у вас чувство разочарования, особенно если вы потратили много времени на поиск решения. Важно понимать, что такие проблемы возникают часто и их возможно решить систематичным подходом.
Реверенция: Изучение возможных причин
Для успешной работы X11-перенаправления необходимо соблюдение нескольких условий. Проблема может находиться в настройках SSH-сессии, конфигурации X сервера, или в правах доступа файлов .Xauthority
.
Образование: Шаги решения проблемы
-
Проверка X-сервера:
- Убедитесь, что X-сервер работает и доступен. В macOS необходимо установить и запустить XQuartz — это может быть выполнено через Системные Настройки, вкладка "Разрешить в фоновом режиме".
-
Проверка переменной DISPLAY:
- После входа в систему через
ssh
, переменная окружения$DISPLAY
должна автоматически устанавливаться. Если этого не происходит, возможно, проблема в самом вызовеssh
. Попробуйте подключиться с использованием параметра-Y
, который иногда работает лучше, чем-X
:ssh -Y username@host
.
- После входа в систему через
-
Создание корректного файла .Xauthority:
- Убедитесь в корректности файла
.Xauthority
. Удаление файла и его повторное создание может быть полезно, но файл должен создаваться корректным образом, без ручного копирования с других источников. Автоматическая генерация правильного файла в большинстве случаев предпочтительнее.
- Убедитесь в корректности файла
-
Включение разрешений:
- Проверка файла
/etc/hosts
на наличие правильной записи дляlocalhost
. - Команда
xhost +
требует корректно установленного DISPLAY, поэтому до её выполнения необходимо удостовериться, что все предыдущие шаги соблюдены.
- Проверка файла
-
Логи и права доступа:
- Изучение логов SSH и X сервера для поиска дополнительных ошибок.
- Проверка прав доступа к файлам конфигурации и Ensure что пользователь имеет необходимый доступ к X11.
Простота: Советы по устранению неисправностей
Подстройте систему пошагово, проверяйте каждый измененный параметр сразу. В сложных системах, таких как X11-пересылка, маленькие детали могут играть ключевую роль.
Доверие: Последующие действия
При выполнении данных шагов, проблема должна будет решиться. Однако, если трудности сохранятся, рекомендуется обратиться к более глубоким логам системы или специалисту. Это поможет избежать возможных ошибок в безопасности и добиться стабильной работы системы.