Como posso evitar o aviso Sem dados xauth; usando dados de autenticação falsos para o encaminhamento X11?

66

Toda vez que inicio uma conexão ssh do meu Mac para um Linux (Debian), recebo este aviso:

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

Isso também acontece para ferramentas que estão usando ssh, como git ou mercurial.

Eu só quero fazer uma alteração local no meu sistema para impedir que isso apareça.

Nota: Eu tenho o servidor X11 (XQuartz 2.7.3 (xorg-server 1.12.4)) no meu Mac OS X (10.8.1) e está funcionando corretamente, posso iniciar o relógio com êxito local ou remotamente.

sorin
fonte
11
Qual comando você está usando para o ssh?
DerfK 30/08/12
@ DerfK apenas, ssh hostnamemas no meu ~/.ssh/configeu adicionei ForwardX11 yeshá algum tempo. Ainda isso é algo que eu quero ter lá.
30512
Usando o Ubuntu 16.04 LTS (agosto de 2017), desisto. Bottom line é que, embora dê o erro, ele funciona. Eu uso ssh -Y hostnameno Linux e ssh -x hostnameao usar o OpenSSH no Windows.
SDSolar 31/08/19

Respostas:

66

Nenhuma das soluções postadas funcionou para mim. Meu sistema cliente (desktop) está executando o macOS 10.12.5 (Sierra). Eu adicionei -vàs opções do sshcomando e ele me disse:

debug1: No xauth program.

o que significa que não possui um caminho correto para o xauthprograma. (Nesta versão do macOS, o caminho para xauthnão é padrão.) A solução foi adicionar esta linha a /etc/ssh/ssh_config(pode estar /etc/ssh/configem algumas configurações) ou em ~/.ssh/config(se você não tiver direitos de administrador):

XAuthLocation /opt/X11/bin/xauth

Agora a mensagem de aviso se foi.

nmgeek
fonte
10
AMD. Anos venho tentando encontrar uma solução, e isso funcionou. Anos eu digo! Observe que eu fiz isso adicionando essa linha na Host *entrada do meu ~/.ssh/configarquivo, em vez de editá-la /etc/ssh/ssh_config. A única documentação que encontrei para isso estava em man sshd_config.
22617 Demitri
Isso funcionou para mim também. Entendo que, no momento, o XQuartz não está sendo bem mantido devido à falta de financiamento. Então, eu acho que portar questões como essa é realmente menor do que eu esperaria.
23417 AlanObject
Na Serra Alta; este é o que funcionou para mim também.
mklein9
11
Observe que você pode enfrentar esse problema mesmo quando seu shell pode encontrar o xauth no seu PATH! Eu acho que o cliente ssh está limpando seu PATH por razões de segurança?
MarcHard
11
Esta solução não funcionou para mim. Estou usando o Cygwin no Win7. A adição de "XAuthLocation / usr / bin / xauth", na entrada "Host *" ou antes dessa linha, em ~ / .ssh / config, não fez diferença.
David M. Karr
22

Encontrou a causa, meu ~/.ssh/configestava incompleto, você precisa de ambos:

Host *
    ForwardAgent yes
    ForwardX11 yes

Meu erro foi incluir apenas a opção ForwardX11.

sorin
fonte
12
Não sei por que isso é necessário / relevante. ForwardAgenté usado para permitir que as chaves armazenadas em cache ssh-agentpassem por várias conexões SSH aninhadas. Não deve ter nenhuma relevância para o X11. E fwiw, de acordo com alguns, não é uma boa ideia em termos de segurança: heipei.github.io/2015/02/26/…
underscore_d
2
Isso não parece certo, o que ajuda é realmente desativar o encaminhamento do X11 ou corrigir a configuração do xauth para configurá-lo. Não está relacionado aos agentes ssh.
Eckes
Esta solução não funcionou para mim.
David M. Karr
Isso está ~/.ssh/configno cliente macOS ou no servidor Linux? Eu tenho esses arquivos em nenhum dos dois. Eu tenho um semelhante/etc/ssh/sshd_config
Max Coplan
12

Deixando o Ubuntu bash no Windows 10 executar ssh -X para obter um ambiente de GUI em um servidor remoto

  • Primeiro

Instale todos os seguintes. Na janela, instale Xming. No Ubuntu bash, use sudo apt installpara instalar ssh xauth xorg.

sudo apt install ssh xauth xorg
  • Segundo

Vá para a pasta contém o ssh_configarquivo, o meu é /etc/ssh.

  • Terceiro

Edite ssh_configcomo administrador (USE sudo). Dentro ssh_config, remover o hash #nas linhas ForwardAgent, ForwardX11, ForwardX11Trusted, e definir os argumentos correspondentes a yes.

# /etc/ssh/ssh_config

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
  • Adiante

No ssh_configarquivo, remover o hash frente #antes Port 22e Protocol 2, além de acrescentar uma nova linha no final do arquivo para indicar o local do arquivo xauth, XauthLocation /usr/bin/xauth, lembre-se escrever o seu próprio caminho de arquivo xauth.

# /etc/ssh/ssh_config

#   IdentifyFile ...
    Port 22
    Protocol 2
#   Cipher 3des
#   ...
#   ...
    ...
    ...
    GSSAPIDelegateCredentials no
    XauthLocation /usr/bin/xauth
  • Quinto

Agora que terminamos de editar o ssh_configarquivo, salve-o quando sairmos do editor. Agora vá para a pasta ~ou $HOME, acrescente export DISPLAY=localhost:0ao seu .bashrcarquivo e salve-o.

# ~/.bashrc
...
...
export DISPLAY=localhost:0
  • Último

Estamos quase terminando. Reinicie seu shell bash, abra seu Xmingprograma e use ssh -X yourusername@yourhost. Então aproveite o ambiente da GUI.

ssh -X yourusername@yourhost

O problema também está no subsistema Ubuntu no Windows e o link está em

https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776

Nota: o texto vinculado inclui 2 erros de digitação (em XauthLocaionvez de XauthLocation)

DestinyOne
fonte
A questão não é sobre o Windows.
precisa saber é o seguinte
No MacOS, é quase a mesma, as diferenças são, em vez de Xming, devemos obter XQuartz, e o ssh_configarquivo está em um local diferente, o meu é /private/etc/ssh.
precisa saber é o seguinte
E também, a última linha para ssh_configserá:XAuthLocation /opt/X11/bin/xauth
DestinyOne
2
É necessário editar: XauthLocaion-> XauthLocation(essa edição é muito pequena para eu fazer).
Echristopherson 3/0318
11
Além de instalar xming, ssh, xauth, e xorg(passo 1), a única coisa necessária para mim foiexport DISPLAY=localhost:0
epónimo
11

Como observado, parece que xauthno OS X o Yosemite voltou para uma versão antiga que não funciona com a $DISPLAYconfiguração do XQuartz :

% xauth -V
1.0.9
% xauth generate $DISPLAY .
xauth: (argv):1:  bad display name "/private/tmp/com.apple.launchd(...)/org.macosforge.xquartz:0" in "add" command
convidado
fonte
11
Testei as mesmas linhas no OS X 10.11 e não recebo nenhum erro. Ainda a mesma versão do XQuartz.
sorin
11
@guest Seu xauth generate $DISPLAY .comando funcionou no meu Mac OS X High Sierra (10.13) e resolveu meu No xauth data; using fake authentication data for X11 forwarding.pb.
SebMa
2

Há um bug no MacOS no momento. Eu me deparei com isso também. A correção para mim envolveu adicionar o seguinte ao meu .bash_profile

dispdir=`dirname $DISPLAY`
dispfile=`basename $DISPLAY`
dispnew="$dispdir/:0"
if [ -e $DISPLAY -a "$dispfile" = "org.x:0" ]; then
  mv $DISPLAY $dispnew
fi
export DISPLAY=$dispnew

Essencialmente, o nome do canal de arquivos associado à sua raiz X não pode ser tratado corretamente e, portanto, precisa de correção. :-)

Tux vermelho
fonte
Duvido que isso resolva o erro em aplicativos da GUI OS X, como o SourceTree.
sorin
Confirmando que ele funciona no Sierra para executar o emacs usando o X - como o Mac é o servidor. isso deve funcionar amplamente nos casos em que o cliente está em uma máquina remota
Mark Mullin
2

Incluindo

XAuthLocation / opt / local / bin / xauth em ~ / .ssh / config

no meu macOS Sierra 10.12.6 funcionou para mim. Uma pequena mudança da resposta 7).

Kepler Oliveira Filho
fonte
1

Acabei de remover ~ / .Xauthority (máquina de destino) da minha pasta raiz e ssh -X 192.168.123.1 novamente e o ik funcionou.

Marcel Kraan
fonte
Posso confirmar que esta é uma resposta no Mac OS Sierra 10.12.4. A remoção de ~ / .Xauthority no servidor SSH faz o truque: ~$ mv ~/.Xauthority ~/.Xauthority.bak um novo cookie mágico foi automaticamente colocado novamente em ~ / .Xauthority quando eu fazia o login novamente. Nenhum script do Bash é necessário.
Kenneth Pegasus
1

No meu caso, foi o problema de .Xauthority contendo o cookie Magic não encaminhado, Fabby em http://askubuntu.com/questions/571116/ recomenda em 14/11/2014 - adicionar esta linha no final do arquivo .bashrc ou . perfil para permitir o encaminhamento de chaves xauth entre usuários ao chamar su:

export $(dbus-launch)

Eu adicionei também anteriormente:

export XAUTHORITY=~/.Xauthority 

para garantir que o controle remoto chamado com ssh -X ̍ @ o encontre.

No meu caso .Xauthority é um link simbólico para o usuário original /home//.Xauthority que su de ...

  cd /home/<child_user>;ln -sf /home/<parent_user>/.Xauthority .xAuthority

com direitos corretos:

  sudo chown <parent_user> /home/<parent_user>/.profile
  chmod a+rw /home/<parent_user>/.profile 

portanto, é acessível para e para. poderá acionar aplicativos e exibir o resultado da janela X na tela local em toda a conta proxy!

DICA: verifique a lista xauth ... se reflete o cookie mágico.

totalmente informatizado
fonte
0

Eu adicionaria isso como um comentário, mas não tenho representante suficiente. Adicionar mais uma linha à solução de sorin funcionou para mim.

Abra seu arquivo de configuração ssh com vim ~/.ssh/config Em seguida, adicione estas linhas a ele:

Host *
    ForwardAgent yes
    ForwardX11 yes
    XAuthLocation /opt/X11/bin/xauth

Você pode verificar sua xauthlocalização com:

which xauth
ssanch
fonte
Não tenho certeza se isso realmente funcionaria porque o local xauth seria diferente em cada máquina remota. O seu parece um MacOS, mas o Linux possui um local diferente. Comecei principalmente a desativar o ForwardX11 completamente porque quase nunca o uso.
sorin 23/02