Certifique-se de ter a variável DISPLAY configurada no seu ambiente cygwin:
export DISPLAY=:0.0
após conectar-se ao SSH, verifique se esse shell também conhece a variável DISPLAY correta com:
echo $DISPLAY
Eu fiz login em um servidor remoto e estou tentando exibir um aplicativo x (por exemplo, firefox). mas uma mensagem de erro aparece. Abaixo estão minhas tentativas de abrir o Firefox
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.
Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$
Eu usei -X, -Y porque li em algum lugar que essas duas opções estão relacionadas a credenciais em relação ao X11 e essas opções farão o trabalho por mim. Mesmo sem os switches -X, -Y, minha tentativa falhou.
O que significa o erro "no display speicified"?
P.S. O estranho é que, se eu me conecto ao servidor remoto através do meu PUTTY e repito o comando 'firefox', ele funciona?!?! (O Firefox é exibido no computador local)
P.S. meu computador local é o Windows 7, portanto, tenho o Xming rodando em segundo plano para permitir a exibição do X11. Quanto à tentativa escrita na parte superior, os comandos foram digitados no terminal Cygwin.
Acabei de me deparar com este problema ao ligar a um servidor RHEL7 sem cabeça.
Você precisa do pacote xorg-x11-xauth instalado em seu host para que a variável DISPLAY seja configurada e seja devidamente autorizada.
Espero ter salvo alguém em algum momento.
Obrigado a @jensd, @unxnut por me ajudar. com base nos seus comentários, consegui descobrir o problema.
A solução precisava de dois passos:
minhas tentativas anteriores carecem de uma ou ambas as duas condições.
De qualquer forma, para usuários posteriores que veem isso, aqui estão alguns exemplos para mostrar o que estou tentando dizer.
minha máquina local não terá nenhum conjunto de variáveis DISPLAY. E então eu vou ssh para o servidor remoto com o switch -X e tente executar xclock
.
Black@Black-PC ~
$ echo $DISPLAY
## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.
como você pode ver um erro Error: Can't open display:
é mostrado no terminal do servidor remoto.
desta vez, na máquina local, vou especificar a variável DISPLAY. Mas quando estou ssh'ing, não vou ligar o interruptor -X. O resultado será uma falha:
Black@Black-PC ~
$ export DISPLAY=:0.0
Black@Black-PC ~
$ echo $DISPLAY
:0.0
Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$
no início, você pode ver que defini corretamente a variável DISPLAY. Mas mesmo assim, depois do ssh'ing (sem o comutador -X) o xclock não é executado.
* Um resultado diferente com setenv | grep DISPLAY
pode ser visto aqui (compare com o caso1). no case2, o resultado é apenas em branco. Por outro lado, o resultado de case1 para esta linha de comando é DISPLAY: undefined variable
.... Não tenho certeza de como essa diferença é causada, mas estou tendo um pressentimento de que isso está relacionado a se você está satisfeito com a condição 1 ou 2.
desta vez, vou especificar corretamente a variável DISPLAY na máquina local e também ssh para o servidor remoto com o meu -X ligado.
Black@Black-PC ~
$ echo $DISPLAY
:0.0
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$
com essa configuração, xclock
funciona !! aqui está uma imagem para provar que não estou mentindo.
o xclock é mostrado com sucesso na minha máquina local.
Novamente, confira o resultado de setenv | grep DISPLAY
nesse caso. Agora mostra DISPLAY=localhost:11.0
. Pelo que eu sei, isso está relacionado com o MIT-MAGIC-COOKIE no arquivo .Xauthority, mas como eu não sei muito sobre isso, não irei mais adiante.
Conclusão: dos três casos acima, podemos confirmar que, para que o X Windows remoto seja exibido corretamente, ambos 1. A variável DISPLAY da máquina local e a chave 2. ssh -X
devem ser configurados corretamente. Obviamente, o servidor remoto deve permitir o X11forwarding.