Encaminhamento X11 via SSH e su

Encaminhamento X11 via SSH e su

Para mim, é estranho que, ao usar a conexão ssh com encaminhamento X11, um usuário e root consigam ver xclock, mas outro usuário não consiga ver isso. Por que?

mahmood@cluster:~$ xclock
^C
mahmood@cluster:~$ su
Password:
root@cluster:mahmood# xclock
^C
root@cluster:mahmood# su - hmousavi
hmousavi@cluster:~$ xclock
MobaXterm X11 proxy: Authorisation not recognised
Error: Can't open display: localhost:10.0
hmousavi@cluster:~$

PS: ^Csignifica que consegui ver a xclockjanela, então pressionei ^Cpara retornar ao terminal.

Responder1

A conexão a um monitor X11 requer duas informações: o nome de exibição (normalmente passado na DISPLAYvariável de ambiente) e obiscoito, que é uma senha para o display que todo aplicativo deve mostrar ao se conectar. Normalmente o cookie é armazenado em ~/.Xauthority, mas pode ser armazenado em um arquivo diferente indicado pela XAUTHORITYvariável de ambiente.

Parece que o valor DISPLAYdefinido por SSH foi preservado pelas duas chamadas para su. No entanto, o cookie está em ~mahmood/.Xauthority; quando você executa um programa como hmousavi, o programa procura um cookie ~hmousavi/.Xauthoritye encontra um valor diferente.

Em princípio, você poderia executar XAUTHORITY=~mahmood/.Xauthority xclock, mas presumivelmente hmousavi não tem permissão para ler esse arquivo - o .Xauthorityarquivo não deve ser legível para outros usuários. Você pode usar o xauthcomando duas vezes, uma vez como mahmood para extrair o valor do cookie ( xauth list localhost:10.0) e uma vez como hmousavi para importar esse valor ( xauth merge), mas isso é complicado. A maneira mais fácil de fazer os aplicativos X11 funcionarem é usar o SSH totalmente, porque o SSH configura o encaminhamento do X11 automaticamente:

mahmood@cluster:~$ ssh -X hmousavi@localhost
hmousavi@cluster:~$ xclock

Adicione a chave pública SSH do mahmood à do hmousavi .ssh/authorized_keyspara permitir isso.

informação relacionada