O OpenSSH fornece uma maneira alternativa de configurar o cookie X no lado do protocolo: a sshrc
ficheiro . Esse arquivo pode ser ~/.ssh/rc
ou /etc/ssh/sshrc
(ou /etc/sshrc
ou algum outro local, dependendo da configuração do servidor). O manual fornece um snippet de código para usar nesse arquivo para definir o cookie manualmente. A menos que o /bin/sh
do seu servidor seja um antigo pré-POSIX, você pode simplificar este código para
if read proto cookie && [ -n "$DISPLAY" ]; then
echo "add unix:${DISPLAY#localhost:} $proto $cookie" | xauth -q -
fi
O manual sugere colocar esse código depois de algum código que configura o diretório inicial - no seu caso você configuraria a variável de ambiente HOME
, possivelmente crie um diretório temporário para ele primeiro.
Seu código é semelhante, mas mantém localhost:
no início da exibição, o que não funcionará se o servidor não estiver ouvindo as conexões TCP. Uma exibição do formulário localhost:10
não é equivalente a :10
, embora eles tenham efeitos similares se ambos funcionarem: o formulário com um nome de host passa por uma conexão TCP, enquanto o formulário sem um nome de host usa um soquete Unix, que pode ser tudo o que está disponível (e que permite otimizações, mesmo que o TCP esteja disponível, mas duvido que essas otimizações façam alguma coisa quando a conexão for retransmitida através do TCP por SSH).
O motivo para preferir echo add … | xauth -
em vez de xauth add …
é que outro usuário que esteja procurando nos processos criados pode capturar a linha de comando xauth
. Como echo
é um shell embutido, eles não poderão recuperar o cookie com o formulário echo add …
.