x11 conexão estabelecida, mas o valor do cookie mágico é diferente?

4

De minha máquina local, eu ssh para um servidor remoto junto com a autenticação referente à exibição X. Eu sei que neste processo, MIT-MAGIC-COOKIES são usados e o valor no servidor e no cliente precisa ser idêntico para que o processo de autenticação seja válido.

No entanto, quando faço login em um servidor remoto e confirmo que o material de exibição X está funcionando bem (por exemplo, executando xclock para ver se o aplicativo xclock é exibido na minha máquina local), quando eu verificar o valor dos cookies, o valor na máquina local e no servidor remoto parece ser diferente. Aqui estão as linhas de comando:

valor do cookie no servidor remoto

chulhyun@chulhyun-Inspiron-3420:~$ ssh -X Black@$labcom
Last login: Wed Jun 25 10:02:25 2014 from 

Black@Black-PC ~
$ xclock    ### xclock appears in local machine.

Black@Black-PC ~
$ xauth list
Black-PC/unix:10  MIT-MAGIC-COOKIE-1  708f623489b1ea129a77e98287d130ca

valor do cookie na máquina local

chulhyun@chulhyun-Inspiron-3420:~$ xauth list
chulhyun-Inspiron-3420/unix:0  MIT-MAGIC-COOKIE-1  5ddd2ce92004eab53ceee8a64b7b88c0

Como você pode ver, o valor do cookie em duas máquinas é diferente. Então a tela X não deveria funcionar?

O que estou perdendo aqui?

P.S. Ouvi dizer que $XAUTHORITY contém o caminho para o arquivo xauthority e verifiquei esse caminho na máquina local:

chulhyun@chulhyun-Inspiron-3420:~$ echo $XAUTHORITY
/var/run/gdm/auth-for-chulhyun-iZfH2u/database

Quando olho para o arquivo "database", o conteúdo fica ilegível porque o conteúdo é composto de caracteres estranhos.

^A^@^@^Vchulhyun-Inspiron-3420^@^A0^@^RMIT-MAGIC-COOKIE-1^@^P]?,? ^D??<???      K{??

isso poderia estar relacionado à pergunta?

atualizar

resultado de xhost e $XAUTHORITY no servidor remoto

Black@Black-PC ~
$ xhost
access control enabled, only authorized clients can connect
SI:localuser:chulhyun

Black@Black-PC ~
$ echo $XAUTHORITY

* como acontece $XAUTHORITY não está definido ... isso é normal?

resultado de xhost na máquina local

chulhyun@chulhyun-Inspiron-3420:~$ xhost
access control enabled, only authorized clients can connect
SI:localuser:chulhyun
    
por kwagjj 25.06.2014 / 03:35

1 resposta

4

Eu acredito que você está ficando confuso com a forma como o SSH realiza o proxy da conexão X11 através do encapsulamento que é estabelecido no lado do servidor remoto com a forma como os cookies mágicos normalmente funcionam. Da página de manual do SSH:

trecho
The DISPLAY value set by ssh will point to the server machine, but with a 
display number greater than zero.  This is normal, and happens
because ssh creates a “proxy” X server on the server machine for forwarding 
the connections over the encrypted channel.

ssh will also automatically set up Xauthority data on the server machine.  
For this purpose, it will generate a random authorization cookie,
store it in Xauthority on the server, and verify that any forwarded 
connections carry this cookie and replace it by the real cookie when the
connection is opened.  The real authentication cookie is never sent to the 
server machine (and no cookies are sent in the plain).

Então, parece que os cookies mágicos mostrados a você no lado do servidor remoto não são de fato os verdadeiros cookies mágicos no servidor local (o seu final). Lembre-se que o visor está sendo definido assim quando você SSH em um servidor remoto:

$ echo $DISPLAY
localhost:11.0

E os cookies mágicos estão conectados por este $DISPLAY :

$ xauth list
remotey.dom.com/unix:11  MIT-MAGIC-COOKIE-1  00f505f4c5731714d30f24a956d4cb8f

A conta é que /unix:11 . Esse é o magic cookie para o lado local da conexão SSH, não o X11 do seu servidor local, que normalmente seria :0 .

.Xauthority

É verdade que esse arquivo contém esses cookies mágicos, mas é um arquivo binário e você geralmente interage com ele por meio do comando xauth . Veja a página de manual de xauth para saber mais sobre isso.

Fazendo isso manualmente

Muitas vezes você verá essa mensagem aparecer se fizer o seguinte:

$ ssh -X user1@remotey
$ su - user2
$ xclock

X11 connection rejected because of wrong authentication.
X connection to localhost:10.0 broken (explicit kill or server shutdown).

Isso ocorre porque o segundo usuário .Xauthority não sabe nada sobre o cookie mágico que foi passado pelo SSH quando você efetuou login inicialmente. Você pode gerar o xauth add necessário enquanto você é usuário1 e usá-lo como user2 assim:

$ ssh -X user1@remotey
$ echo $DISPLAY
localhost:10.0

Observe acima que você está em exibição # :10.0 . Agora gere o xauth add necessário para essa exibição #:

$ echo xauth add $(xauth list ${DISPLAY#localhost})
xauth add remotey.dom.com/unix:10 MIT-MAGIC-COOKIE-1 111ef940f6d75b4a9eb64ea3579ef67e

Agora torne-se usuário2 e adicione-o:

$ su - user2
$ xauth add remotey.dom.com/unix:10 MIT-MAGIC-COOKIE-1 111ef940f6d75b4a9eb64ea3579ef67e
$ xclock

E temos a exibição do relógio conforme o esperado.

OBSERVAÇÃO: Você também pode fazer coisas em uma única linha de comando depois de entender o que está acontecendo com o acima.

usando su
$ xauth extract - ${DISPLAY#localhost} | \
    su - user2 -c "xauth merge -; xclock"
use sudo
$ xauth extract - ${DISPLAY#localhost} | \
    sudo su - user2 -c "xauth merge -; xclock"

Referências

por 01.09.2014 / 08:30