Esclarecimento rápido: tenho o servidor X em execução na máquina Windows que hospeda a distribuição WSL Ubuntu. Posso iniciar programas GUI local e remotamente. Por exemplo, posso iniciar gvim
a partir do WSL local e também posso iniciar gvim
quando estou em uma sessão SSH.
WSL é bom para comunicação com servidores remotos e consegui fazer o encaminhamento X funcionar. No entanto, continuo recebendo o seguintetexto extraquando executo ssh -X user@machine_ip
o comando.Eu me pergunto se isso significa que todas as minhas sessões da GUI são inseguras.Posso conviver com essa mensagem se ela não indicar uma grande ameaça potencial.
Warning: No xauth data; using fake authentication data for X11 forwarding.
Executei as seguintes etapas de instalação e configuração, mas falhei na última etapa:
mv ~/.Xauthority ~/old.Xauthority
sudo apt install ssh xauth xorg -y
touch ~/.Xauthority
xauth generate $DISPLAY .
Receberei a seguinte mensagem de erro
xauth: (argv):1: couldn't query Security extension on display "localhost:0.0"
Tenho reproduzido o problema descrito em três máquinas Windows (dois laptops e um desktop), mas de alguma forma consegui me livrar da Warning: No xauth data;
mensagem " " no quarto computador desktop. Em seguida, copiei o seguinte do quarto computador desktop para o restante das três máquinas, nada melhorou.
- Conteúdo do
~/.Xauthority
arquivo, - Adicionado o seguinte a
/etc/ssh/config
:
ForwardAgent no
ForwardX11 no
ForwardX11Trusted yes
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
XauthLocation /usr/bin/xauth
- Adicionado o seguinte a
~/.ssh/config
:
Host *
ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes
Protocol 2
GSSAPIDelegateCredentials no
XAuthLocation /usr/bin/xauth
Por último, continuo recebendo a seguinte "conversa" com xauth
o programa em todas as máquinas Windows com bugs que executam 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>
Ao verificar o manual xauth
, add
parece ser um comando válido de alguma forma.
Eu tentei três distribuições WSL e todas elas estão produzindo a mesma " No xauth data
" mensagem de erro. As três distribuições da Microsoft Store incluem: Ubuntu, Ubuntu 18.04 LTS e Pengwin (Debian).
Por favor, informe como obter xauth
o comando para gerar alguns "dados xauth" adequados.
Responder1
De acordo com a postagem e sua resposta, tudo está funcionando corretamente, exceto esta mensagem de erro.
A mensagem parece dizer que "dados de autenticação falsos" são enviados para a sessão remota. Não vejo como usar esses dados pode beneficiar qualquer invasor remoto, então não vejo por que não é seguro simplesmente ignorar o aviso de "Sem dados xauth".
WSL não é uma implementação completa do Linux. Muitas chamadas de sistema e bibliotecas foram implementadas, mas muitas não.
Minha opinião pessoal: eu diria que você pode considerar com segurança a mensagem de erro como proveniente de um recurso mal implementado ou não implementado e simplesmente ignorá-lo.
Responder2
Você precisa instalar um servidor X como o Xming para que funcione porque o Windows não possui servidor X.
ssh está apenas encaminhando as solicitações do servidor X da máquina remota para a sua e, se você não o tiver, gerará um erro.
depois de instalar o Xming, digite o seguinte comando no shell WSL, não no ssh
export DISPLAY=:0
este comando deve ser executado toda vez que você abrir um novo terminal
Você também pode adicioná-lo a~/.bashrc
se não funcionar, instale o xterm também, ele instala todas as bibliotecas X. no Ubuntu
sudo apt update;sudo apt install xterm
então você pode usar o xauth normalmente
você também pode desativá-lo usandoxauth +
Você também deve usar o sinalizador ssh -Y
se quiser usar o encaminhamento X.
ssh -Y user@host
se você instalou o xming e ele não está funcionando, certifique-se de que a variável DISPLAY esteja definida. esta variável deve ser definida apenas no WSL e você pode usar xauth.
export DISPLAY=:0
Responder3
Pode ou não ser relevante para a sua situação, mas estava tendo problemas com o comando xauth porque:
- Eu estava montando um sistema de arquivos drvfs e usando-o como minha casa
- drvfs não suporta links - links físicos ou links simbólicos
- xauth tenta usar links
Pelo que vale a pena, resolvi esse problema definindo a variável de ambiente XAUTHORITY para algum caminho no sistema de arquivos wsl ext4.
Idem .ICEauthority e o env var ICEAUTHORITY. (Mesmo que a página de manual do iceauth não mencione o env var ICEAUTHORITY, parece funcionar.)