Questão Como corrijo um erro “não é possível abrir a tela” ao abrir um programa X após o ssh'ing com o encaminhamento do X11 ativado?


Após o lançamento do aplicativo X11 (XQuartz 2.3.6, xorg-server 1.4.2-apple56) no meu Mac (OS X 10.6.8), abrindo um terminal no X11 e rodando xhost +, Eu então ssh -Y para o meu Ubuntu 10.04 VM (rodando em VMware Fusion). Quando eu corro gedit .bashrc (por exemplo), eu recebo:

(gedit:9510): Gtk-WARNING **: cannot open display: 

set | grep DISPLAY não retorna nada.

Mas se eu ssh -Y na minha máquina Ubuntu 11.04, gedit .bashrc trabalho. echo $DISPLAY retorna "localhost: 10.0".

eu tentei export DISPLAY=localhost:10.0 enquanto sshed em minha VM e, em seguida, executando gedit .bashrc, mas eu recebo:

(gedit:9625): Gtk-WARNING **: cannot open display: localhost:10.0

O que poderia ser diferente na configuração das duas máquinas Ubuntu diferentes que explicariam por que uma trabalha e a outra não?

Atualizar: Como sugerido por Zoredache no comentário abaixo, eu corri sudo apt-get install xbase-clients, mas continuo a ter o mesmo problema.


82


origem


A caixa do Ubuntu 10.04 tem as ferramentas adequadas para o X11 instalado? Instale o xbase-clients, se já não estiver instalado. - Zoredache
Eu instalei, mas ainda tenho o mesmo problema. (Veja acima.) - Daryl Spitzer
Sim. Só para ter certeza, eu reiniciei a VM (e reconectei através do SSH depois). - Daryl Spitzer
Talvez tente passar a opção -vv para ssh quando você se conectar, isso imprime mensagens de depuração detalhadas, você deve ver vários comentários sobre o encaminhamento do X11 durante a conexão. - Zoredache
No meu caso, foi apenas uma questão de atualizar a versão XQuartz do MacOS - Waruna Ranasinghe


Respostas:


Verifique o sshd_config do servidor (normalmente /etc/ssh/sshd_config), e certifique-se de que a opção X11Forwarding esteja habilitada com a linha

X11Forwarding yes

Se X11Forwarding não for especificado, o padrão é não nas máquinas Debian que eu tenho disponível para verificar.


31



Eu descobri depois de configurar outra VM do Ubuntu, que eu preciso instalar o xbase-clients e ativar o X11Forwarding. Atualize sua resposta para incluir os dois e eu aceito. - Daryl Spitzer
Interessante. Pelo menos na nova instalação do 10.04 que fiz esta manhã, o X11Forwarding foi ativado por padrão. Os caras do Ubuntu devem estar brincando com os padrões novamente. - Zoredache
@DerfK, no meu sistema "X11Forwarding yes" já estava lá ainda estou recebendo erro como, (gedit: 8381): Gtk-WARNING **: não pode abrir o display: em tais casos - A J
No Debian você pode ter que instalar o pacote xauth e, em seguida, logar novamente. - comte


A partir de xhost +: Como corrigir o erro "Não é possível abrir o display" ao iniciar a GUI no servidor remoto:

Responda: Você pode corrigir o erro “não é possível abrir a exibição” seguindo o procedimento xhost mencionado neste artigo.

Permitir que os clientes se conectem de qualquer host usando xhost +

Execute o seguinte comando para desabilitar o controle de acesso, pelo qual   você pode permitir que os clientes se conectem de qualquer host.

$ xhost +

controle de acesso desativado, os clientes podem se conectar de qualquer host

Ativar o encaminhamento do X11

Ao fazer o ssh, use a opção -X para habilitar o encaminhamento do X11.

$ ssh username@hostname -X

Ative o encaminhamento X11 confiável, usando a opção -Y,

$ ssh username@hostname -Y

Abra aplicativos GUI nesse host

Depois de abrir a conexão ssh ao host remoto, conforme explicado acima,   você pode abrir qualquer aplicativo gráfico que o abra sem qualquer problema.

Se você ainda receber o erro “não é possível abrir a tela”, ajuste o   variável como mostrado abaixo.

$ export DISPLAY='IP:0.0'

Nota: IP é o IP da estação de trabalho local em que você deseja a GUI   aplicação a ser exibida.


48



+1 para a nota que IP = é o IP da estação de trabalho local onde você deseja obter a GUI - PCoder
Para aqueles com problemas semelhantes no OS X, certifique-se também de ter o XQuartz instalado, caso contrário, nenhuma dessas correções ajudará. (A pergunta do OP mostra que ele tem o XQuartz, então esta é mais uma nota de lado para aqueles que têm problemas parecidos como eu) - Dolan Antenucci
Note que correr xhost + é muito inseguro e não deve ser usado! Como Stefan Rogin mencionou, o invasor pode, a partir do host, conectar-se ao seu XSession, ler tudo o que você digitar ou até mesmo alterar a tela que você vê. - jirislav


Eu tive esse problema ao fazer login em uma VM Ubuntu a partir do Mac OS X também - ela não parece gostar de 'localhost' na variável de exibição por algum motivo. Então defina o IP manualmente, como sugere o harrymc:

export DISPLAY="127.0.0.1:10.0"

Então os programas X11 devem estar bem. Não parece ser necessário dizer ao SO que localhost e 127.0.0.1 são equivalentes, mas funciona, pelo menos.


16



Isso funcionou para mim. Alguma idéia por que o localhost não estava funcionando? - Alex
BINGO! Eu tenho ficado preso por esse problema por algum tempo ... Eu conectei por SSH e não pude iniciar programas Gtk (X11 simples, como "xeyes", trabalhei no entanto). DISPLAY estava correto. Na verdade, a resolução de "localhost" não foi! Se eu definir manualmente DISPLAY = 127.0.0.1: 10.0, ou DISPLAY = :: 1: 10.0 ele funciona. Editar / etc / hosts parece não ter efeito; e DNS está corretamente configurado ("dig localhost" correclty report 127.0.0.1 and :: 1) Então, parece ser um bug em qualquer que seja a resolução de DNS para conexões X11 em Gtk (gtk? gdk? glib? other?). - Pablo Saratxaga
Em uma instalação Debian para o Beagle Bone Black, o / etc / host não foi configurado para ser lido por ninguém além do root. Isso causou os sintomas relatados aqui. Feito / etc / hosts legível por todos, e funcionou bem. - Daniel


Eu tive esse problema com o meu servidor CentOS KVM, estava faltando o programa "xauth".


13



Isso me ajudou na instalação do debian mínimo, muito obrigado! - binOr


Se você tem esse problema Depois de algum tempo quando correndo com -X arg. ou apenas ForwardX11 em / etc / ssh / ssh_config, em seguida, execute $ ssh username@hostname -Y, para permitir encaminhamento X11 confiável, não sei a causa exata, mas eu estou supondo com -X alguns recursos expiram depois de algum tempo, provavelmente para aumentar a segurança.

Aqui está o que eu encontrei online:

Se você usa ssh -X remotemachine, a máquina remota é tratada como   cliente não confiável. Então, o seu cliente local envia um comando para o controle remoto   máquina e recebe a saída gráfica. Se o seu comando viola   algumas configurações de segurança, você receberá um erro.

Mas se você usar ssh -Y remotemachine, a máquina remota será tratada como   cliente confiável. Esta última opção pode abrir problemas de segurança. Porque   outro cliente gráfico (X11) poderia farejar dados da máquina remota   (fazer screenshots, fazer keylogging e outras coisas desagradáveis) e é ainda   possível alterar esses dados.

Se você quiser saber mais sobre essas coisas eu sugiro ler o   Xsecurity manpage ou a especificação de extensão X Security. Além disso você   pode verificar as opções ForwardX11 e ForwardX11Trusted no seu   / etc / ssh / ssh_config.

fontes:


8





Ao executar UXTERM ou XTERM apenas emitir

export $DISPLAY 

A variável estará lá. Em seguida, basta configurá-lo e exportá-lo.


4





Acabei de testar no meu Mac, outros sistemas podem ficar bem:

  1. Permitir que os clientes se conectem de qualquer host usando xhost +

    $ xhost +

  2. Você deve ter um ambiente que suporte a exibição do X11

    [Mac System] Instale o X11 para mac https://www.xquartz.org/

  3. Você deve deixar sua tela x11 para frente do servidor ssh

    atualizar /etc/ssh/sshd_config E definir X11Forwarding yes, em seguida, reinicie o seu servidor ssh

  4. Você deve deixar sua sessão ssh para frente x11 com -X parâmetro

    $ ssh -X user @ ip

  5. Como abrir o aplicativo X11 no PyCharm?
    • abra uma sessão ssh que suporte a exibição do X11 (lembre-se de manter esta sessão)
    • corre echo $DISPLAY nessa sessão ssh
    • conjunto DISPLAY variável de ambiente para o seu PyCharm

4



Por que isso é diferente ou por que deveria ser preferível a qualquer outra resposta? Por favor, explique se você puder com um simples editar. Você consegue!! - Pimp Juice IT
@ McDonald's Obrigado, atualizado com mais detalhes. - Color