Obrigado a @jensd, @unxnut por me ajudar. com base nos seus comentários, consegui descobrir o problema.
A solução precisava de duas etapas:
- a variável DISPLAY deve estar definida corretamente.
- ao transferir para o servidor remoto, a opção -X deve estar ligada
minhas tentativas anteriores carecem de uma ou de ambas as duas condições.
De qualquer forma, para usuários posteriores que veem isso aqui, há exemplos para mostrar o que estou tentando dizer.
caso 1
minha máquina local não terá nenhuma variável DISPLAY configurada. E então ssh para o servidor remoto com a opção -X e, em seguida, 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.
case2
desta vez, na máquina local, especificarei a variável DISPLAY. Mas, quando estou gravando, 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 eu configurei corretamente a variável DISPLAY. Mas mesmo assim, após ssh'ing (sem a opção -X), o xclock não é executado.
* Um resultado diferente setenv | grep DISPLAYpode ser visto aqui (compare com o caso1). no caso2, 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 entendendo que está relacionado à questão de saber se você satisfez a condição 1. ou 2 .
case3
desta vez, especificarei corretamente a variável DISPLAY na máquina local e também o ssh para o servidor remoto com a opção my -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.
o xclock é mostrado com sucesso na minha máquina local.
Mais uma vez, confira o resultado setenv | grep DISPLAYdeste 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 vou mais adiante.
Conclusão: dos três casos acima, podemos confirmar que, para que o X Windows remoto seja exibido corretamente, a variável 1. DISPLAY da máquina local e o 2. -Xcomutador ssh devem estar configurados corretamente. Obviamente, o servidor remoto deve permitir o encaminhamento do X11.