Para se conectar ao cliente ssh-agent
, ssh
(ou qualquer outro processo, para esse assunto) precisa saber como se conectar a ele. Esta informação é emitida pelo ssh-agent
quando iniciado na forma de comandos shell. Geralmente parece assim:
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-H8yPWdYCNFmT/agent.506989; export SSH_AUTH_SOCK;
SSH_AGENT_PID=506990; export SSH_AGENT_PID;
echo Agent pid 506990;
Normalmente, o aplicativo de distribuição apenas avalia esses comandos para carregar as variáveis no ambiente de processo atual (que é então propagado para todos os processos filhos).
Assim, você precisa localizar o soquete apropriado para se conectar ao processo de ssh-agent
correto (sim, você pode ter vários agentes em execução ao mesmo tempo, mesmo para um usuário). Existem duas maneiras de fazer isso:
-
verifique o PID do agente em questão e verifique todos os diretórios
/tmp/ssh-*
para um soquete com PID mais próximo menor (poisssh-agent
forks para se tornar um daemon, o PID usado em nome de o soquete é menor que o PID do daemon real)Se o programa que gerou o agente em questão ainda estiver em execução (ou um de seus filhos for), você poderá extrair as informações de seu ambiente:
$ strings /proc/<PID>/environ | grep SSH_
-
Sempre inicie o agente dizendo qual soquete ele deve usar:
$ ssh-agent -a /path/to/ssh_agent/socket
Isso pode ser útil, por exemplo, também quando você está trabalhando em uma máquina local e remotamente - você pode conectá-lo aos scripts de inicialização do shell e ao se conectar à máquina em que o agente foi gerado pelo ambiente de desktop, você só terá acesso a todas as chaves que você carregou lá. O mesmo vale para usar multiplexadores de terminal e assim por diante.