Como depurar "Conexão X11 rejeitada devido a autenticação incorreta"

10

Estou com um problema no encaminhamento do X através do SSH. Eu lutei por muito tempo, mas ninguém parece ajudar.

Agora estou tomando um tato diferente. Gostaria de saber como depurar os erros?

Quais logs devo procurar, quais sinalizadores extras devo definir (-v etc) e o que devo procurar?

Edição adicional:

Se eu entrar no Putty no servidor e tentar xeyes, recebo:

Proxy PuTTY X11: tentativa de protocolo de autorização erradoErro: Não é possível abrir a tela: localhost: 10.0

Se xauth generate $DISPLAYeu receber:

Proxy PuTTY X11: tentativa de protocolo de autorização incorretoxauth: (argv): 1: não é possível abrir a exibição "localhost: 10.0".

wkdmarty
fonte
Na sua pergunta do outro dia, você descreve sintomas diferentes. Você ainda está sofrendo com "Não é possível abrir a tela" ou resolveu isso? Se você resolveu isso e uma das respostas para essa pergunta foi útil, selecione-a como resposta para recompensar a pessoa que o ajudou.
Kenster
Concordo, agora é um erro diferente, encerrei essa pergunta.
Wkdmarty
Veja se esta resposta se aplica ao seu servidor.
Kenster
Kenster, eu não tinha nenhum arquivo rc no servidor, então criei um e colei o código. Não faz diferença.
Wkdmarty
Nos logs do PuTTY, isso aparece depois que eu tento executar um programa x (após o login SSH). 2014-09-01 15:16:38 Recebeu a solicitação de conexão X11 de 127.0.0.1:59566 2014-09-01 15:16:38 A conexão direta de abertura do X11 foi bem-sucedida 2014-09-01 15:16:38 Não há mais nada a enviar, 2014/09/01 canal fechando 15:16:38 ligação X11 transmitido terminados
wkdmarty

Respostas:

13

Minha solução passo a passo:

1) faça login com a opção -X root de login do host remoto

$ ssh -X [email protected]

2) verifique se existe um arquivo .Xauthority

[root @ localhost ~] # ls -al
[root @ localhost ~] # vim .Xauthority

3) copie o arquivo .Xauthority para o diretório do outro usuário

[root @ localhost ~] # cp .Xauthority / home / oracle /
cp: sobrescreve `/home/oracle/.Xauthority '? y

4) defina permissões para este arquivo

[root @ localhost ~] # chown oracle: oinstall .Xauthority
[root @ localhost ~] # chmod 0600 .Xauthority

5) login usuário oracle

[root @ localhost ~] # su - oracle

6) configuração de exibição no host local: 10.0

[oracle @ localhost ~] $ echo $ DISPLAY
localhost: 10.0
[oracle @ localhost ~] $ ls -al

7) lista os cookies xauth existentes

[oracle @ localhost ~] lista $ xauth
localhost.localdomain / unix: 11 MIT-MAGIC-COOKIE-1 310f1b02c1080e73059391c193a1881b
localhost.localdomain / unix: 10 MIT-MAGIC-COOKIE-1 41843db100830a2aa352641ac47bb759

8) adicionando

[oracle @ localhost ~] $ xauth adiciona localhost.localdomain / unix: 10 MIT-MAGIC-COOKIE-1 41843db100830a2aa352641ac47bb75

9) teste

[oracle @ localhost ~] $ xclock

Espero que eles sirvam! @wcaraza

Walter Caraza
fonte
2
A parte que o xauth add ... é o truque #
Wei
as etapas 3. e 4. fez o truque para mim
kiltek
6

Verifique se o servidor SSH tem a xauthferramenta instalada e se o seu ~/.Xauthorityarquivo é gravável. (Não existente também é bom, desde que seja xauthpossível criá-lo.)

Verifique se os dados do xauth estão sendo atualizados:

server$ xauth list

Tente adicionar manualmente dados simulados do xauth (novamente, no servidor SSH) e verifique se xauthhá algum problema (por exemplo, não é possível criar o arquivo de bloqueio ou modificar o próprio arquivo Xauthority):

server$ xauth add localhost:123 MIT-MAGIC-COOKIE-1 d7e2e4a8c5aa4430bfcc2abb436940d2

Se necessário, execute novamente em strace.

Execute o serviço SSH no modo de depuração, definindo LogLevel DEBUG2na configuração do servidor ( /etc/ssh/sshd_config) ou iniciando o sshd diretamente no modo de depuração:

server$ sshd -rddp 12234

(Neste exemplo, 12234é a porta SSH temporária à qual você precisa se conectar. Qualquer porta livre servirá.)

user1686
fonte
Obrigado. O Xauth no servidor pode gravar no arquivo .Xauthority. Mas o que deveria estar definindo? servidor = N40L, cliente = Lin001. A lista xauth no N40L deve mostrar uma entrada para o host local: 10 MIT-MAGIC-COOKIE-1 {Lin001'sHexKey}?
wkdmarty 1/09/09
@wkdmarty: Sim, seu sshd escutará em uma porta TCP correspondente à exibição: 10 (ou: 11,: 12 ...), e isso aparecerá como "localhost: 10". Quanto a chave sextavada, no entanto, eu realmente não sei se ele está destinado a usar a mesma chave - Acho ssh realmente gera um novo, e atua como um proxy ...
user1686
ok perfeito, eu posso ver que 0.0.0.0:6011 está ouvindo. Minha variável DISPLAY indica N40L: 11.0, o que eu acho errado, então vou mudar para DISPLAY = localhost: 10.0. Não, ainda está enganando. Eu notei na conexão SSH esta linha: debug2: x11_get_proto / usr / bin / xauth list: 0.0 2> / dev / null onde eu vi o log de conexão SSH, esta linha é diferente ... mostrando uma geração de chaves, nunca : 0,0.
Wkdmarty
@wkdmarty: Normalmente, o sshd deve definir $ DISPLAY para o valor correto ... e a porta 6011 corresponde à exibição 11, e não 10, de qualquer maneira.
User1686
11
"Minha variável DISPLAY indica N40L: 11.0 ... então eu vou mudar isso". Para ser franco, deixe o DISPLAY em paz. Se o ssh configurar o encaminhamento do X11, ele definirá DISPLAY para um valor que funcionará. Substituir o valor que o ssh define apenas tornará o processo de solução de problemas mais difícil.
Kenster
3

Está funcionando, está funcionando. haha

FINALMENTE.

Depois de descobrir que não era o sistema, adicionando um usuário de teste (cujo encaminhamento x funcionou "fora da caixa"), pensei em começar a copiar os arquivos de inicialização .bash * para tornar o usuário "quebrado".

Nenhum dos arquivos era diferente, então a seguir excluí o diretório .ssh dos usuários. Quando eu fiz o SSH, ele gemia sobre "O servidor recusou nossa chave", mas eu consegui entrar usando a senha. Uma vez logado, eu poderia x encaminhar perfeitamente.

Agora vou tentar configurar a chave novamente e ver se consigo fazer isso funcionar também. Então, voltará ao normal.

wkdmarty
fonte
Isso funcionou para mim também. Eu tentei todos os outros métodos, mas sim, aparentemente, o problema estava nas chaves.
Auxiliar
1

Mais uma coisa que pode causar esse problema é a existência de um ~/.ssh/rcarquivo no servidor - a máquina à qual você está se conectando. Exclua-o (ou renomeie-o) para resolver o problema.

Ken Jackson
fonte
11
Por man sshd, o sshd é executado em ~/.ssh/rcvez de xauth@PimpJuiceIT.
Ken Jackson
Obrigado! Para mais detalhes, consulte: docstore.mik.ua/orelly/networking_2ndEd/ssh/… . Deve ser possível adicionar os comandos apropriados para iniciar o xauth no arquivo rc, mas não o encontrei.
Matt B.
0

rm ~/.Xauth* e depois reconecte.

Isso funciona para mim. Para mais detalhes

zzz92
fonte