Estou tentando abrir xterm
no 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?
xterm
no terminal atual antes do ssh-ing?Respostas:
Se o ssh conseguir estabelecer a conexão, ele será definido
DISPLAY
como o valor apropriado. Como vocêX11DisplayOffset
definiu 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 substituindoDISPLAY
. O valor:0
(ou:0.0
a 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 érshd
ousshd
, 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 fiqueDISPLAY
lá. (Existem muito poucos casos em que você precisa definirDISPLAY
manualmente.)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 aDISPLAY
tela 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 (AcceptEnv
diretiva insshd_config
), o cliente está enviandoDISPLAY
e 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 dacommand
diretiva in~/.ssh/authorized_keys
. Ouxterm
poderia ser um script.¹ Ou qualquer que seja o valor de,
X11DisplayOffset
esteja na configuração do servidor, mas quase nunca é alterado do padrão.fonte
DISPLAY=localhost:11.0
no meuenv
, mas sua relevância e se devo alterá-lo paraDISPLAY 10.0
não é clara.DISPLAY=:0 xterm
e ainda recebo oxterm: Xt error: Can't open display: :0
erro, portanto a variável de ambiente não é o problema.Seu comando deve funcionar, ou pelo menos funciona para mim. Tente isso:
Editar (1):
Tente o seguinte:
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:
fonte
-Y
mas também não funcionou. Ainda ficoCan't open display: :0.0
localhost:10.0
O controle de acesso do X provavelmente está no caminho.
Execute
xhost +
(do pacotex11-xserver-utils
) para desativar completamente o controle de acesso.fonte
Além disso
X11Forwarding yes
, eu também precisava adicionarno
/etc/ssh/sshd_config
como descrito aqui .
fonte
Eu descobri que o xauth não havia sido instalado.
fonte
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/
fonte
Você deve abrir primeiro a conexão e, uma vez estabelecido, abra o xterm.
fonte
ssh -X name@machine
e após a conexãoxterm
, recebo o mesmo erro. Você quis dizer isso? ;)ssh
é a primeira conexão, e o xterm é iniciado nessessh
ambiente. Portanto, de qualquer maneira, é praticamente a mesma coisa apenas se você usarssh -X remote
primeiro, para verificar se está marcado corretamenteecho $DISPLAY
para garantir que$DISPLAY
está definido corretamente no computador remoto após umssh -X
.