Desde que recebi o Bounty, repostarei meu comentário-chave por completo - e para evitar que os visitantes com o mesmo problema estejam no caminho errado:
O Tmux removerá as variáveis de ambiente
A página man do Tmux informa que update-environment removerá as variáveis "que não existem no ambiente de origem [...] como se -r fosse dado ao comando set-environment".
Aparentemente, o que causou o problema. Veja resposta de Chris abaixo . No entanto, ainda não consigo imaginar como a variável pode estar ausente no "ambiente de origem" e ainda assim ser válida na janela tmux recém-criada ...
Resposta anterior:
Como funciona o encaminhamento de SSH
Na máquina remota, dê uma olhada no ambiente do seu shell depois de estabelecer a conexão SSH:
user@remote:~$ env | grep SSH
SSH_CLIENT=68.38.123.35 45926 22
SSH_TTY=/dev/pts/0
SSH_CONNECTION=68.38.123.35 48926 10.1.35.23 22
SSH_AUTH_SOCK=/tmp/ssh-hRNwjA1342/agent.1342
O mais importante aqui é o SSH_AUTH_SOCK, que está atualmente configurado para algum arquivo em / tmp. Se você examinar este arquivo, verá que é um soquete do domínio Unix - e está conectado à instância específica do ssh em que você se conectou. Importante, isso muda toda vez que você se conecta.
Assim que você efetua logout, esse arquivo de soquete específico desaparece. Agora, se você for recolocar sua sessão do tmux, verá o problema. Tem o ambiente de quando o tmux foi originalmente lançado - o que poderia ter sido há algumas semanas. Esse socket em particular já está morto há muito tempo.
Solução
Como sabemos que o problema tem a ver com saber onde está o soquete de autenticação SSH atualmente ativo, vamos apenas colocá-lo em um lugar previsível!
No seu arquivo .bashrc ou .zshrc na máquina remota, adicione o seguinte:
# Predictable SSH authentication socket location.
SOCK="/tmp/ssh-agent-$USER-screen"
if test $SSH_AUTH_SOCK && [ $SSH_AUTH_SOCK != $SOCK ]
then
rm -f /tmp/ssh-agent-$USER-screen
ln -sf $SSH_AUTH_SOCK $SOCK
export SSH_AUTH_SOCK=$SOCK
fi
Eu não acho que você tenha que colocar um comando 'update-environment' no seu tmux.conf. De acordo com o man page , SSH_AUTH_SOCK já é coberto por padrão.
Crédito
Minha resposta é um trecho de postagem deste blog por Mark 'xb95' Smith, que explica o mesmo problema para a tela .