Aclaración rápida: tengo X-server ejecutándose en la máquina Windows que aloja la distribución WSL Ubuntu. Puedo ejecutar programas GUI tanto de forma local como remota. Por ejemplo, puedo iniciar gvim
desde el WSL local y también puedo iniciar gvim
cuando tengo una sesión SSH.
WSL es bueno para comunicarse con los servidores remotos y logré que X-forwarding funcione. Sin embargo, sigo recibiendo lo siguientetexto adicionalcuando ejecuto ssh -X user@machine_ip
el comando.Me pregunto si esto significa que todas mis sesiones de GUI son inseguras.Puedo vivir con ese mensaje si no indica mucha amenaza potencial.
Warning: No xauth data; using fake authentication data for X11 forwarding.
Ejecuté los siguientes pasos de instalación y configuración, pero fallé en el último paso:
mv ~/.Xauthority ~/old.Xauthority
sudo apt install ssh xauth xorg -y
touch ~/.Xauthority
xauth generate $DISPLAY .
Recibiré el siguiente mensaje de error
xauth: (argv):1: couldn't query Security extension on display "localhost:0.0"
He estado reproduciendo el problema descrito en tres máquinas con Windows (dos portátiles y una de escritorio), pero de alguna manera logré deshacerme del Warning: No xauth data;
mensaje " " en la cuarta computadora de escritorio. Luego copié lo siguiente desde la cuarta computadora de escritorio al resto de las tres máquinas, no se mejoró nada.
- Contenido del
~/.Xauthority
archivo, - Se agregó lo siguiente a
/etc/ssh/config
:
ForwardAgent no
ForwardX11 no
ForwardX11Trusted yes
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
XauthLocation /usr/bin/xauth
- Se agregó lo siguiente a
~/.ssh/config
:
Host *
ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes
Protocol 2
GSSAPIDelegateCredentials no
XAuthLocation /usr/bin/xauth
Por último, sigo teniendo la siguiente "conversación" con xauth
el programa en todas las máquinas Windows con errores que ejecutan 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>
Al consultar el manual xauth
, add
parece ser un comando válido de alguna manera.
Probé tres distribuciones WSL y todas producen el mismo " No xauth data
" mensaje de error. Las tres distribuciones de Microsoft Store incluyen: Ubuntu, Ubuntu 18.04 LTS y Pengwin (Debian).
Indique cómo obtener xauth
el comando para generar algunos "datos xauth" adecuados.
Respuesta1
Según la publicación y su respuesta, todo funciona bien excepto este mensaje de error.
El mensaje parece decir que se envían "datos de autenticación falsos" a la sesión remota. No veo cómo el uso de esos datos puede beneficiar a cualquier atacante remoto, por lo que no veo por qué no es seguro simplemente ignorar la advertencia de "No hay datos xauth".
WSL no es una implementación completa de Linux. Se implementaron muchas llamadas al sistema y bibliotecas, pero muchas no.
Mi opinión personal: Yo diría que puedes tomar con seguridad que el mensaje de error proviene de una característica mal implementada o no implementada y simplemente ignorarlo.
Respuesta2
Tienes que instalar un servidor X como Xming para que funcione porque Windows no tiene un servidor X.
ssh simplemente reenvía las solicitudes del servidor X de la máquina remota al suyo y, si no lo tiene, genera un error.
después de instalar Xming, ingrese el siguiente comando en el shell WSL, no en ssh
export DISPLAY=:0
este comando debe ejecutarse cada vez que abre una nueva terminal
También puedes agregarlo a~/.bashrc
si no funciona, instale xterm también, instalará todas las bibliotecas X. en ubuntu
sudo apt update;sudo apt install xterm
entonces puedes usar xauth como de costumbre
También puedes desactivarlo usandoxauth +
También debe usar el indicador ssh -Y
si desea utilizar el reenvío X.
ssh -Y user@host
Si instaló xming y no funciona, asegúrese de que la variable DISPLAY esté configurada. esta variable debe configurarse solo en WSL y puede usar xauth.
export DISPLAY=:0
Respuesta3
Puede que sea relevante o no para su situación, pero estaba teniendo problemas con el comando xauth porque:
- Estaba montando un sistema de archivos drvfs y usándolo como mi hogar
- drvfs no admite enlaces, ya sean enlaces físicos o enlaces simbólicos
- xauth intenta utilizar enlaces
Por si sirve de algo, solucioné este problema configurando la variable de entorno XAUTHORITY en alguna ruta en el sistema de archivos wsl ext4.
Lo mismo ocurre con .ICEauthority y ICEAUTHORITY env var. (Aunque la página de manual de iceauth no menciona la var de entorno ICEAUTHORITY, parece funcionar).