Невозможно сгенерировать файлы xauth с помощью Ubuntu на WSL

Невозможно сгенерировать файлы xauth с помощью Ubuntu на WSL

Краткое пояснение: у меня запущен X-сервер на машине Windows, на которой размещен дистрибутив WSL Ubuntu. Я могу запускать программы с графическим интерфейсом как локально, так и удаленно. Например, я могу запустить их gvimиз локального WSL, а также могу запустить их, gvimкогда я нахожусь в сеансе SSH.


WSL хорош для связи с удаленными серверами, и мне удалось заставить работать X-forwarding. Тем не менее, я продолжаю получать следующеедополнительный тексткогда я запускаю ssh -X user@machine_ipкоманду.Интересно, означает ли это, что все мои сеансы графического интерфейса небезопасны?Я могу смириться с таким сообщением, если оно не несет в себе большой потенциальной угрозы.

Warning: No xauth data; using fake authentication data for X11 forwarding.

Я выполнил следующие шаги установки и настройки, но на последнем шаге произошел сбой:

mv ~/.Xauthority ~/old.Xauthority 
sudo apt install ssh xauth xorg -y
touch ~/.Xauthority
xauth generate $DISPLAY .

Я получу следующее сообщение об ошибке

xauth: (argv):1:  couldn't query Security extension on display "localhost:0.0"  

Я воспроизводил описанную проблему на трех машинах Windows (двух ноутбуках и одном настольном компьютере), но каким-то образом мне удалось избавиться от Warning: No xauth data;сообщения " " на четвертом настольном компьютере. Затем я скопировал следующее с четвертого настольного компьютера на остальные три машины, ничего не улучшилось.

  1. Содержимое файла ~/.Xauthority,
  2. Добавлено следующее /etc/ssh/config:
    ForwardAgent no
    ForwardX11 no
    ForwardX11Trusted yes
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    XauthLocation /usr/bin/xauth
  1. Добавлено следующее ~/.ssh/config:
Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
    Protocol 2
    GSSAPIDelegateCredentials no
    XAuthLocation /usr/bin/xauth

Наконец, я продолжаю получать следующий «диалог» с xauthпрограммой на всех глючных машинах Windows, на которых запущен WSL (Ubuntu 18.04 LTS).

User @ machine ➜  ~  xauth                                                   
Using authority file /home/llinfeng/.Xauthority 
xauth> generate $DISPLAY                                                                                  
xauth: (stdin):2:  unable to open display "$DISPLAY".                                                     
xauth> generate $DISPLAY .                                                                            
xauth: (stdin):3:  unable to open display "$DISPLAY".                                                     
xauth> add $DISPLAY .                                                                                     
xauth: (stdin):4:  bad "add" command line                                                                 
xauth>    

Проверив руководство xauth, addя обнаружил, что это какая-то допустимая команда.


Я попробовал три дистрибутива WSL, и все они выдают одно и то же No xauth dataсообщение об ошибке " ". Три дистрибутива из Microsoft Store включают: Ubuntu, Ubuntu 18.04 LTS и Pengwin (Debian).


Пожалуйста, посоветуйте, как получить xauthкоманду для генерации правильных «данных xauth».

решение1

Согласно посту и вашему ответу, все работает правильно, за исключением этого сообщения об ошибке.

В сообщении, похоже, говорится, что "поддельные данные аутентификации" отправляются в удаленный сеанс. Я не вижу, как использование этих данных может принести пользу удаленному злоумышленнику, поэтому я не вижу, почему небезопасно просто игнорировать предупреждение "Нет данных xauth".

WSL не является полной реализацией Linux. Многие системные вызовы и библиотеки были реализованы, но многие — нет.

Мое личное мнение: я бы сказал, что вы можете спокойно воспринимать сообщение об ошибке как сообщение о неправильно реализованной или не реализованной функции и просто игнорировать его.

решение2

Для работы вам придется установить X-сервер, например Xming, поскольку в Windows нет X-сервера.

ssh просто перенаправляет запросы X-сервера удаленной машины на вашу, и если у вас его нет, он выдает ошибку.

после установки Xming введите следующую команду в оболочке WSL, а не в ssh

export DISPLAY=:0

эта команда должна выполняться каждый раз, когда вы открываете новый терминал

Вы также можете добавить его в~/.bashrc

если не работает, установите xterm, он установит все библиотеки X. в Ubuntu

sudo apt update;sudo apt install xterm

затем вы можете использовать xauth как обычно

Вы также можете отключить его с помощьюxauth +

Вам также необходимо использовать флаг ssh, -Yесли вы хотите использовать X-пересылку.

ssh -Y user@host

Если вы установили xming и он не работает, убедитесь, что переменная DISPLAY установлена. Эта переменная должна быть установлена ​​только в WSL, и вы можете использовать xauth.

export DISPLAY=:0

решение3

Может быть, это имеет отношение к вашей ситуации, а может и нет, но у меня возникли проблемы с командой xauth по следующим причинам:

  • Я монтировал файловую систему drvfs и использовал ее в качестве домашней.
  • drvfs не поддерживает ссылки — ни жесткие, ни символические.
  • xauth пытается использовать ссылки

Как бы то ни было, я обошёл эту проблему, установив переменную среды XAUTHORITY на некоторый путь в файловой системе wsl ext4.

То же самое касается .ICEauthority и переменной окружения ICEAUTHORITY. (Хотя на странице руководства iceauth переменная окружения ICEAUTHORITY не упоминается, она, похоже, работает.)

Связанный контент