A pergunta foi um pouco incerta, então essa resposta pode realmente ser uma questão diferente. Mas como a resposta ainda pode ser útil para os outros, acho que vale a pena mantê-la por perto.
Quando você digita ssh-agent /bin/bash
, é iniciada uma instância de ssh-agent, que continuará em execução enquanto esse shell estiver ativo. Por padrão, o ssh-agent será usado apenas por esse shell e terminará assim que você fechar esse shell.
Se, em vez disso, você digitar apenas ssh-agent
, um agente será iniciado em segundo plano, que continuará em execução, mesmo se você fechar o shell. O comando ssh-agent irá imprimir comandos no stdout, que podem ser digitados para começar a usar o ssh-agent. Você teria que digitar esses comandos a cada vez.
Você pode iniciar um agente ssh em segundo plano e começar a usá-lo no shell atual digitando eval $(ssh-agent)
. No entanto, você teria que armazenar a variável de ambiente SSH_AUTH_SOCK
em algum lugar e configurá-la se você fizer login novamente.
Com essas informações básicas em funcionamento, tenho três sugestões sobre como fazer com que o agente esteja sempre disponível.
- Use uma sessão de tela no servidor. Quando você iniciar o tipo de tela
eval $(ssh-agent) ; screen
, esse agente permanecerá em execução no servidor e, se você se conectar a essa tela novamente mais tarde, ele ainda se lembrará de qual agente usar. - Insira comandos em seu arquivo
~/.bash_profile
para localizar o agente ativo, se houver um e defina a variável de ambienteSSH_AUTH_SOCK
. - Use o encaminhamento do agente ssh para usar o agente no cliente em vez de um no servidor. Certifique-se de compreender as implicações de segurança disso, antes de usá-lo.
Encontrar o agente ssh de ~/.bash_profile
pode ser feito com um script parecido com este
#!/bin/bash
for P in /tmp/ssh-*/agent.*
do
if [ -O "$P" ] && [ -O "$(dirname "$P")" ]
then
L=$(SSH_AUTH_SOCK="$P" timeout 1s ssh-add -l > >(wc -l))
case $? in
0)
echo "$L $P"
;;
1)
echo "0 $P"
;;
esac
fi &
done | sort -rn | if read N P
then
echo "SSH_AUTH_SOCK='$P'; export SSH_AUTH_SOCK"
else
ssh-agent
fi
O qual pode ser invocado a partir de ~/.bash_profile
, como este eval $(find-agent)
(assumindo que o script foi denominado find-agent.)