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.