Conectar-se a um monitor X11 requer duas informações: o nome de exibição (normalmente passado na variável de ambiente DISPLAY
) e o cookie , que é uma senha para a exibição que todo aplicativo deve mostre ao conectar. Normalmente, o cookie é armazenado em ~/.Xauthority
, mas pode ser armazenado em um arquivo diferente indicado pela variável de ambiente XAUTHORITY
.
Parece que o valor de DISPLAY
definido pelo 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 por um cookie em ~hmousavi/.Xauthority
e encontra um valor diferente.
Em princípio, você pode executar XAUTHORITY=~mahmood/.Xauthority xclock
, mas o hmousavi presumivelmente não tem permissão para ler esse arquivo - o arquivo .Xauthority
não deve ser legível para outros usuários. Você pode usar o comando xauth
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 é incômodo. A maneira mais fácil de fazer com que os aplicativos do X11 funcionem é usar o SSH até o fim, 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 ao .ssh/authorized_keys
do hmousavi para permitir isso.