caso 1

caso 1

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:

  1. a variável DISPLAY deve ser definida corretamente.
  2. 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 DISPLAYpode 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, xclockfunciona!! aqui está uma captura de tela para provar que não estou mentindo. insira a descrição da imagem aqui o xclock é mostrado com sucesso na minha máquina local.

Novamente, verifique o resultado setenv | grep DISPLAYneste 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. -Xchave 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 xorgo Firefox começou a funcionar.

informação relacionada