
Efetuei login em um servidor remoto e estou tentando exibir um aplicativo x (por exemplo, Firefox). mas aparece uma mensagem de erro. 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 ~]$
Usei -X, -Y porque li em algum lugar que essas duas opções estão relacionadas às credenciais do X11 e essas opções farão o trabalho para mim. Mesmo sem as opções -X, -Y, minha tentativa falhou.
O que significa o erro 'nenhuma exibição especificada'?
PS O estranho é que se eu me conectar ao servidor remoto através do meu PUTTY e repetir o comando 'firefox' ele funciona?!?!(o firefox é exibido no computador local)
PS: meu computador local é o Windows 7, então 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.
Responder1
Acabei de me deparar com esse problema ao conectar-me 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 definida e devidamente autorizada.
Espero ter salvado alguém algum tempo.
Responder2
Certifique-se de ter a variável DISPLAY definida em 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
Responder3
Obrigado a @jensd, @unxnut por me ajudar. com base em seus comentários, consegui descobrir o problema.
A solução precisava de duas etapas:
- a variável DISPLAY deve ser definida corretamente.
- ao fazer ssh para o servidor remoto, a opção -X deve estar ativada
minhas tentativas anteriores não possuem uma ou ambas as condições.
De qualquer forma, para usuários posteriores que virem isso, aqui estão alguns exemplos para mostrar o que estou tentando dizer.
caso 1
minha máquina local não terá nenhuma variável DISPLAY definida. E então farei ssh para o servidor remoto com a opção -X e tentarei 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.
caso2
desta vez, na máquina local, especificarei a variável DISPLAY. Mas quando estou fazendo ssh, não ligo a opção -X. O resultado será um fracasso:
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 configurei corretamente a variável DISPLAY. Mas mesmo assim, após o ssh'ing (sem a opção -X) o xclock não é executado.
*Um resultado diferente setenv | grep DISPLAY
pode ser visto aqui (comparar com o caso 1). no caso2, o resultado fica 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 palpite de que está relacionado ao fato de você ter satisfeito a condição 1. ou 2 .
caso3
desta vez, especificarei corretamente a variável DISPLAY na máquina local e também ssh para o servidor remoto com minha opção -X ativada.
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 captura de tela para provar que não estou mentindo.
o xclock é mostrado com sucesso na minha máquina local.
Novamente, verifique o resultado setenv | grep DISPLAY
neste caso. Agora mostra DISPLAY=localhost:11.0
. Pelo que sei, isso está relacionado ao MIT-MAGIC-COOKIE no arquivo .Xauthority, mas como não sei muito sobre isso, não irei mais longe.
Conclusão: dos três casos acima, podemos confirmar que para que o X Windows remoto seja exibido corretamente, tanto a 1. variável DISPLAY da máquina local quanto a 2. -X
chave ssh devem estar configuradas corretamente. Obviamente, o servidor remoto deve permitir o encaminhamento do X11.
Responder4
Eu tive um problema semelhante com o sistema baseado em Debian (proxmox) e o problema ocorreu porque o xorg não estava instalado. Depois que apt-get install xorg
o Firefox começou a funcionar.