Erro ao executar aplicação via ssh -X "Error: Can't open display:"


Muitos já se depararam com uma mensagem dessas ao tentar abrir uma aplicação gráfica pelo terminal via ssh.

Numa busca rápida pelo google você encontra várias “soluções” que variam desde permissões dos arquivos do /etc, instalação do pacote xorg-x11-xauth, criação do arquivo .Xauthority no home do usuário, habilitar e desabilitar o controle de acesso com xhost + e xhost -, setar variável $DISPLAY com o comando export e por aí vai…

Falando em variável $DISPLAY, olha só o conteúdo dela (e mesmo alterando não consigo executar os aplicativos).

Mas e se nenhuma dessas soluções der certo?
Bem, comigo não resolveu e vou mostrar como acertei a configuração num OpenSuse 12.1 e um Debian 6.0.
Dei uma olhada no arquivo de log para obter mais informações. Destaquei apenas a mensagem de log que nos mostra o erro no ssh.

Encontrei referências em http://bugs.debian.org e http://bugs.opensolaris.org (textos retirados de outros sites, pois a Oracle já não o mantém) sobre um problema com o openssh-server 5.5 quando o protocolo ipv6 era desabilitado.
Solução rápida, habilitar o ipv6 e pronto, realmente consegui executar minhas aplicações gráficas pelo terminal.

Reparem que assim que realizo o ssh já recebo a informação de que o arquivo .Xauthority não existe, ou melhor, não existia porque o sistema acabou de criá-lo. Além disso, a variável $DISPLAY agora tem informação.

Problema resolvido: Sim
Da maneira que eu queria: Não
Costumo desabilitar o protocolo ipv6 das máquinas onde sei que isso não será usado. Já tive algumas dores de cabeça por ele estar ativo, até escrevi um post junto com o Vagner Fonseca falando sobre isso “Módulos no Linux”.
Tem duas maneiras de utilizar o X11Forwarding do SSH sem problema e manter o ipv6 desativado, lembrando que as modificações foram feitas na máquina acessada.
-> Incluir o parâmetro “-4” na variável SSH_OPTS do arquivo /etc/sysconfig/ssh (OpenSuse) ou /etc/default/ssh (Debian) e reiniciar o serviço ssh.
OU
-> Descomentar o item #AddressFamily any no arquivo /etc/ssh/sshd_config, alterá-lo para AddressFamily inet e reiniciar o serviço ssh.
Espero que tenham gostado e até a próxima!

Share

    Comments

    1. Boa tarde
      A alguns dias tive problemas com X usando ssh, estava instalando o oracle usando o XMING, após desabilitar o IPV6 simplesmente parou de funcionar.
      Consegui resolver usando a segunda opção “AddressFamily inet”.
      O problema esta em desabilitar o IPV6 como você disse, se habilitar novamente o serviço volta a funcionar.
      Obrigado por compartilhar..

      • Valeu Alessandro,
        Levei uma surra até entender isso pq comecei a desabilitar o ipv6 nas máquinas novas e ainda não havia testado o ssh com a opção -X.
        Resolvi isso agora de manhã e durante o almoço escrevi o post.
        Obrigada pela feedback.
        Abraços.

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    © 2019 All Rights Reserved. Cooperati.