Se você tiver um servidor X em execução e a variável de ambiente DISPLAY
estiver configurada como :0
, isso dirá aos aplicativos para se conectarem ao servidor X usando um soquete de domínio unix que geralmente é encontrado no Linux em /tmp/.X11-unix/X0
(veja abaixo sobre o namespace abstrato no Linux recente).
Quando você faz o ssh para usinar remotemachine , sshd
em remotemachine configura DISPLAY para localhost:10
(por exemplo), o que significa que as conexões X são feito por TCP para a porta 6010 do host local da máquina. O sshd em remotemachine escuta conexões para lá e encaminha qualquer conexão de entrada para o cliente ssh. O cliente ssh então tenta se conectar a /tmp/.X11-unix/X0
(no terminal local, não no remoto) para contatar o seu servidor X.
Agora, talvez você não tenha um servidor X em execução (você está no Mac?) ou talvez o soquete do domínio unix não esteja em /tmp/.X11-unix, o que significa que o ssh não foi configurado corretamente em tempo de compilação.
Para descobrir qual é o caminho correto para o soquete unix, você pode tentar um strace -e connect xlogo
(ou o equivalente em seu sistema) em sua máquina local para ver o que um aplicativo X normal faz.
netstat -x | grep X
também pode dar uma pista.
Para o registro, em uma máquina wheezy Linux Debian aqui, o Xorg escuta em /tmp/.X11-unix/X0
no sistema de arquivos e /tmp/.X11-unix/X0
no espaço de nomes abstrato (geralmente escrito @/tmp/.X11-unix/X0
). De strace
, os aplicativos X11 parecem agora usar esse namespace abstrato por padrão, o que explica por que eles ainda funcionam se /tmp/.X11-unix
for removido, enquanto ssh
não usa esse namespace abstrato.