Existem dois cenários possíveis que podem estar causando isso.
Ambos resultam do fato de que muitos gerentes de desktop lançam seu próprio agente de chave ssh. Isso é feito porque o agente precisa ser iniciado antes do gerenciador da área de trabalho para que as variáveis exportadas sejam selecionadas pelos aplicativos iniciados pelo gerenciador da área de trabalho (seu emulador de terminal).
-
O seu gerenciador de desktop está lançando seu próprio agente ssh depois que você inicia o seu, e ele acaba substituindo-o.
Não sei ao certo em que ponto, ou como, você está lançando seu agente ssh, mas se o gerenciador de área de trabalho iniciar um após o seu, suas variáveis exportadas substituirão as que você criou.
-
Seu gerenciador de desktop está lançando seu próprio agente ssh antes do seu, e o seu não está sendo mantido.
Se você estiver apenas iniciando uma janela de terminal e fazendo
eval $(ssh-agent); ssh-add
, as variáveis exportadas por essessh-agent
não persistirão depois que você fechar a janela do terminal. Depois de iniciar uma nova janela de terminal, você obterá as variáveis definidas pelo agente ssh lançadas pelo gerenciador de área de trabalho.
A maneira como o ssh-agent
funciona é que ele inicia um daemon em segundo plano e depois imprime várias variáveis que precisam ser configuradas.
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-JLbBwVBP4754/agent.4754; export SSH_AUTH_SOCK;
SSH_AGENT_PID=4755; export SSH_AGENT_PID;
echo Agent pid 4755;
Então, quando você eval $(ssh-agent)
, você está apenas definindo todas essas variáveis.
Agora, as variáveis são herdadas apenas por crianças, portanto, para que elas persistam no gerenciador de desktop, elas precisam ser definidas antes do início do gerenciador da área de trabalho. Isso pode ser difícil de acertar e varia entre distros. É por isso que muitos gerentes de desktop fazem isso por si mesmos.
Observe que isso também é feito algumas vezes durante a inicialização da pilha de pam.