
Краткое пояснение: у меня запущен 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;
сообщения " " на четвертом настольном компьютере. Затем я скопировал следующее с четвертого настольного компьютера на остальные три машины, ничего не улучшилось.
- Содержимое файла
~/.Xauthority
, - Добавлено следующее
/etc/ssh/config
:
ForwardAgent no
ForwardX11 no
ForwardX11Trusted yes
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
XauthLocation /usr/bin/xauth
- Добавлено следующее
~/.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 не упоминается, она, похоже, работает.)