Вопрос или проблема
Я пытаюсь выяснить, как перенаправить X11 через ssh без использования -Y
. Оба компьютера работают на последней версии стандартного Arch Linux с помощником AUR yay
. Сервер работает на xorg с KDE Plasma, а клиент работает на xorg с i3wm, оба не используют Wayland.
На клиенте и сервере установлен extra/xorg-xauth
. Сервер использует sddm
, тогда как клиент использует lightdm
. Когда я запускаю ssh user@ip -X
, он жалуется на то, что на клиенте нет файла ~/.Xauthority
. Это происходит потому, что sddm устанавливает файл в /tmp/xauth_XXX
, где XXX меняется при каждой загрузке. $XAUTHORITY
установлен на правильный путь к файлу, однако ssh (или sshd) игнорирует это значение в пользу ~/.Xauthority
от lightdm. Как заставить ssh использовать файл, на который указывает $XAUTHORITY
?
У меня есть доступ к root на обоих компьютерах для конфигурации.
Ответ или решение
Решение проблемы с ~/.Xauthority
при использовании SSH для переноса X11
Работа с X11 через SSH может вызывать определенные сложности, особенно в вашей ситуации, когда вы пытаетесь использовать опцию -X
, но сталкиваетесь с ошибкой отсутствия файла ~/.Xauthority
на клиентской машине. Давайте подробно рассмотрим вашу проблему и предложим решение.
Описание проблемы
Вы пытаетесь настроить X11-перенос через SSH между двумя системами Arch Linux, где на сервере работает KDE Plasma, а на клиенте — i3wm. Оба компьютера имеют установленные пакеты xorg-xauth
, что должно облегчить процесс аутентификации X-сессий. Однако при попытке подключиться с клиента к серверу с помощью команды:
ssh user@ip -X
вы получаете сообщение об ошибке, указывающее на отсутствие файла ~/.Xauthority
. Эта проблема усугубляется тем, что сервер создает файл Xauthority
в /tmp/xauth_XXX
, а переменная окружения $XAUTHORITY
указывает на этот путь. Тем не менее, SSH (или SSHD) игнорирует значение этой переменной и пытается использовать ~/.Xauthority
.
Решение
Чтобы решить проблему, вам нужно убедиться, что SSH-сервер принимает правильный путь к файлу Xauthority
. Вот несколько шагов, которые вам следует выполнить:
-
Проверьте переменную окружения
$XAUTHORITY
на клиенте. Убедитесь, что она корректно указывает на файл Xauthority:echo $XAUTHORITY
Если значение неправильное, установите его вручную:
export XAUTHORITY=/tmp/xauth_XXX
Замените
XXX
на фактическое имя файла, которое вы видите в/tmp
. -
Создайте символическую ссылку. Если вы хотите, чтобы SSH всегда искал файл
Xauthority
в/tmp
, вы можете создать символическую ссылку:ln -s /tmp/xauth_XXX ~/.Xauthority
Таким образом, SSH будет использовать этот файл для аутентификации X11.
-
Настройка SSHD. Если вы хотите, чтобы SSHD всегда использовал значение переменной
$XAUTHORITY
, вам потребуется внести изменения в конфигурацию SSHD на сервере. Откройте файл/etc/ssh/sshd_config
и добавьте или отредактируйте следующие строки:X11UseLocalhost no X11Forwarding yes
Не забудьте перезапустить SSH-сервис после внесения изменений:
sudo systemctl restart sshd
-
Проверка и тестирование. После выполнения всех этих шагов, попробуйте снова подключиться к серверу с помощью команды
ssh user@ip -X
. Если все настроено правильно, вы сможете запускать графические приложения с сервера на клиенте.
Заключение
Настройка переноса X11 через SSH в среде, использующей разные дисплейные менеджеры и файлы Xauthority, может быть непростой задачей. Однако, следуя предложенным шагам, вы сможете решить проблему с отсутствием ~/.Xauthority
на клиенте. Если у вас возникают дополнительные вопросы или проблемы, не стесняйтесь обратиться за помощью. Настройка сетевых служб может быть сложной, но верное понимание процесса обеспечит вам стабильную работу систем.
Эти шаги помогут вам устранить текущую проблему и обеспечат успешную работу с удалёнными графическими приложениями.