~/.Xauthority не найден при подключении по ssh

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

Я пытаюсь выяснить, как перенаправить 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. Вот несколько шагов, которые вам следует выполнить:

  1. Проверьте переменную окружения $XAUTHORITY на клиенте. Убедитесь, что она корректно указывает на файл Xauthority:

    echo $XAUTHORITY

    Если значение неправильное, установите его вручную:

    export XAUTHORITY=/tmp/xauth_XXX

    Замените XXX на фактическое имя файла, которое вы видите в /tmp.

  2. Создайте символическую ссылку. Если вы хотите, чтобы SSH всегда искал файл Xauthority в /tmp, вы можете создать символическую ссылку:

    ln -s /tmp/xauth_XXX ~/.Xauthority

    Таким образом, SSH будет использовать этот файл для аутентификации X11.

  3. Настройка SSHD. Если вы хотите, чтобы SSHD всегда использовал значение переменной $XAUTHORITY, вам потребуется внести изменения в конфигурацию SSHD на сервере. Откройте файл /etc/ssh/sshd_config и добавьте или отредактируйте следующие строки:

    X11UseLocalhost no
    X11Forwarding yes

    Не забудьте перезапустить SSH-сервис после внесения изменений:

    sudo systemctl restart sshd
  4. Проверка и тестирование. После выполнения всех этих шагов, попробуйте снова подключиться к серверу с помощью команды ssh user@ip -X. Если все настроено правильно, вы сможете запускать графические приложения с сервера на клиенте.

Заключение

Настройка переноса X11 через SSH в среде, использующей разные дисплейные менеджеры и файлы Xauthority, может быть непростой задачей. Однако, следуя предложенным шагам, вы сможете решить проблему с отсутствием ~/.Xauthority на клиенте. Если у вас возникают дополнительные вопросы или проблемы, не стесняйтесь обратиться за помощью. Настройка сетевых служб может быть сложной, но верное понимание процесса обеспечит вам стабильную работу систем.

Эти шаги помогут вам устранить текущую проблему и обеспечат успешную работу с удалёнными графическими приложениями.

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

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