Problema de tunelamento X da máquina remota

Problema de tunelamento X da máquina remota

Estou tentando encapsular uma janela x. Se fizer:

user@local: ssh -X user@remote  xclock

funciona. No entanto, se eu fizer login na máquina primeiro e depois iniciar o programa, ele falhará.

user@local: ssh -X user@remote

user@remote: xclock
No protocol specified
Error: Can't open display: :0

O que deu errado?

Editar

Eu verifiquei a $DISPLAYvariável no controle remoto:

user@local: ssh -X user@remote "echo $DISPLAY"
:0.0

configurá-lo para o mesmo valor no controle remoto após o login não funciona. Definir $DISPLAYcomo :10.0funciona sugerido.

user@local: ssh -X user@remote
user@remote: DISPLAY=:10.0 xclock

Ainda não entendo por que preciso de valores $DISPLAY diferentes para a sessão interativa e não interativa.

Responder1

Verifique se a variávelMOSTRARestar corretamente definido parahost local: 10.0. Se não é,

export DISPLAY=localhost:10.0 

, Então tenterelógio xde novo.

Mas por que preciso que 'DISPLAY' seja 10,0 em vez de 0,0?

OServidor X(ouJanela X, ouX11) é exatamente isso, um servidor, aguardando que os aplicativos se conectem a ele para exibi-los. Isso ocorre no seu pc, onde os aplicativos se conectam ao servidor X através de um soquete localizado em/tmp, normalmente chamado/tmp/.X11-unix. No entanto, como todos os servidores,X11pode ser contatado a partir de computadores remotos e exibir graficamente aplicativos executados em computadores remotos.

No entanto, esta capacidade acarreta muitos riscos de segurança, de modo que é muito difícil abrir seu servidor X11 para aplicativos remotos (você precisa especificar a mesma opção pelo menos três vezes, em arquivos de configuração diferentes).

Agora entressh, o que torna isso seguro: é o-S/-Xopção desshque lida com segurança (também criptografando o tráfego) todos os detalhes de abertura do seu servidor X11 local para o aplicativo remoto. No entanto, quando você deseja exibir ocontrolo remotoxclock localmente, você deve instruir o aplicativo remoto que o servidor X11 a ser contatado não é o seu próprio servidor X11, mas é um em um PC distante (aquele a partir do qual você iniciou osshsessão). Entãorelógio xdeve enviar sua saídanãopara uma tomada local em/tmpmas para uma porta de rede (é127.0.0.1:6010, qualsshmisericordiosamente encurta parahost local:10), do qualsshse encarregará de enviá-lo de volta ao seu PC local, onde eventualmente a saída será exibida graficamente.

Se você não gosta que as diferentes conexões ssh (você pode ter várias) sejam separadas por10unidades, como emlocalhost:10.0, localhost:20.0, ...) você deve alterar a declaração

X11DisplayOffset 10

em/etc/ssh/sshd_configpara o que você quiser (embora eu não veja nenhuma razão para isso, para ser honesto).

É esta afirmação que faz com que os displays remotos estejam disponíveisnãono porto6.000(qual seriahost local:0.0), mas no porto6010. Você pode verificar isso sozinho:

$ ssh -Y vps
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Apr 17 02:47:42 2017 from 
root@vps:~# ss -lntp | grep 6010
LISTEN     0      0                 127.0.0.1:6010                     *:*      users:(("sshd",16172,8))
LISTEN     0      0                       ::1:6010                    :::*      users:(("sshd",16172,7))

informação relacionada