ssh -X "Erro Xt: não é possível abrir a tela:: 0.0"


9

Estou tentando abrir xtermno meu servidor remoto (Ubuntu Server 10.04) com ssh:

ssh -X name@machine xterm

mas o erro retornado é:

xterm Xt error: Can't open display: :0.0`

Eu pesquisei e tentei de tudo que encontrei. Ainda está recebendo esse erro. A variável DISPLAY deve ser definida automaticamente, certo?

Parte de sshd_config:

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

Algum conselho?


Você pode rodar xtermno terminal atual antes do ssh-ing?
enzotib 16/09/11

@belacqua: não é necessário. Normalmente, eu me conecto a um servidor remoto sem cabeça e poderia executar facilmente aplicativos X remotos no servidor X local.
enzotib 16/09/11

@enzotib - obrigado; Eu não sabia disso.
belacqua 16/09/11

@enzotib desculpe, eu não vi o seu comentário. Sim, posso abrir o xterm na minha máquina local #
Fabian

Respostas:


8

Se o ssh conseguir estabelecer a conexão, ele será definido DISPLAYcomo o valor apropriado. Como você X11DisplayOffsetdefiniu 10 (o valor padrão), o ssh usará a primeira exibição disponível começando em 10. Se você vir um valor menor que 10¹, algo está interferindo no encaminhamento normal do X11 configurado pelo ssh, pelo menos por substituindo DISPLAY. O valor :0(ou :0.0a parte após o ponto é irrelevante) indica a primeira exibição iniciada na máquina, que em casos típicos é a sessão ativa (ou o prompt de login gráfico) no console da máquina.

A explicação mais provável para o comportamento observado é que um dos seus arquivos de configuração de shell é definido DISPLAY. O culpado mais óbvio é ~/.bashrc(que devido a uma peculiaridade do bash é executado sempre que o pai do bash é rshdou sshd, mesmo que o shell não seja interativo). Outro arquivo que define variáveis ​​de ambiente é /etc/environment. Se for esse o caso, a solução é óbvia: não fique DISPLAYlá. (Existem muito poucos casos em que você precisa definir DISPLAYmanualmente.)

Existem outras explicações exóticas. Isso pode acontecer se você tiver alterado seu shell de login para screen(uma idéia interessante em teoria, mas não prática) e você tiver um arquivo de inicialização do shell que forçosamente define a DISPLAYtela interna (não é uma boa ideia). Isso também pode acontecer se você configurou o servidor para aceitar variáveis ​​de ambiente enviadas pelo cliente ( AcceptEnvdiretiva in sshd_config), o cliente está enviando DISPLAYe a conexão X não pôde ser estabelecida. Ou pode acontecer se você definir uma variável de ambiente no servidor através da commanddiretiva in ~/.ssh/authorized_keys. Ou xtermpoderia ser um script.

¹ Ou qualquer que seja o valor de, X11DisplayOffsetesteja na configuração do servidor, mas quase nunca é alterado do padrão.


11
ter maneiras listadas para corrigir os vários problemas mencionados, seria útil.
George Stocker

@GeorgeStocker Todos esses problemas têm a forma “há alguma configuração em um arquivo de configuração”, portanto, a correção para todas elas é remover ou alterar a configuração. Existe um em particular que você possa identificar, mas não consertar?
Gilles 'SO- stop be evil'

Eu vejo DISPLAY=localhost:11.0no meu env, mas sua relevância e se devo alterá-lo para DISPLAY 10.0não é clara.
George Stocker

@GeorgeStocker Então seus sintomas não correspondem a esta pergunta. Atualizei minha resposta para esclarecer que 10 é o valor de corte abaixo do qual essa resposta se aplica. 11 é um valor esperado aqui (provavelmente a segunda conexão SSH ativa com o encaminhamento X).
Gilles 'SO- stop be evil'

Estou executando DISPLAY=:0 xterme ainda recebo o xterm: Xt error: Can't open display: :0erro, portanto a variável de ambiente não é o problema.
Dan Dascalescu 08/08/19

3

Seu comando deve funcionar, ou pelo menos funciona para mim. Tente isso:

ssh -Y user@machine xterm

Editar (1):

Tente o seguinte:

ssh -X user@machine env

Isso deve mostrar todo o ambiente. Deve haver várias coisas SSH lá, e também DISPLAY. DISPLAY deve ser 10.0.

Você também pode tentar o seguinte:

ssh -X user@machine DISPLAY=10.0 xterm

Eu tentei com isso, -Ymas também não funcionou. Ainda ficoCan't open display: :0.0
Fabian

Qual é a sua máquina local em execução? O: 0.0 é preocupante, já que é o padrão para um servidor X local , não um remoto ...
ed.

Eu uso o Ubuntu 10.04, Linux Mint 11 ou Mac OS X 10.7. O uso depende da localização (trabalho / casa), mas o erro é o mesmo #
Fabian

Vou editar a resposta ... (1)
ed.

Minha variável DISPLAY élocalhost:10.0
Alexis Wilke

2

O controle de acesso do X provavelmente está no caminho.

Execute xhost +(do pacote x11-xserver-utils) para desativar completamente o controle de acesso.


2

Além disso X11Forwarding yes, eu também precisava adicionar

X11UseLocalhost no

no /etc/ssh/sshd_config

como descrito aqui .


1

Eu descobri que o xauth não havia sido instalado.


0

Além disso, verifique se você possui o X11 instalado no lado do cliente. Eu estava recebendo esse problema quando atualizei meu Mac para o OS X Mountain Lion. O Mountain Lion remove o X11, portanto você deve instalá-lo novamente por meio do projeto X Quartz de código aberto. http://xquartz.macosforge.org/landing/


-1

Você deve abrir primeiro a conexão e, uma vez estabelecido, abra o xterm.


Obrigado pela sua resposta. O que você quer dizer com "abrir uma conexão"? Quando uso ssh -X name@machine e após a conexão xterm, recebo o mesmo erro. Você quis dizer isso? ;)
Fabian

Não, ele deve funcionar também sem conectar primeiro.
enzotib

@ Fabian - Eu acredito que é isso que ele quis dizer.
Belacqua

Eu acho que uma conexão VNC é necessária.
Nanofarad

@enzotib, bem ... na verdade sshé a primeira conexão, e o xterm é iniciado nesse sshambiente. Portanto, de qualquer maneira, é praticamente a mesma coisa apenas se você usar ssh -X remoteprimeiro, para verificar se está marcado corretamente echo $DISPLAYpara garantir que $DISPLAYestá definido corretamente no computador remoto após um ssh -X.
Alexis Wilke
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.