Mesmo que o agente esteja ativo, se determinadas variáveis de ambiente não estiverem configuradas, você não terá nenhuma referência ao agente. Além disso, mesmo que esteja tudo bem, agente e variáveis, a identidade não é enviada automaticamente ao agente: essa é uma tarefa para ssh-askpass
, funcionando apenas em sessões X.
Se você estiver usando o bash, crie o arquivo ~/.bash_profile
com este conteúdo:
# File: ~/.bash_profile
# source ~/.profile, if available
if [[ -r ~/.profile ]]; then
. ~/.profile
fi
# start agent and set environment variables, if needed
agent_started=0
if ! env | grep -q SSH_AGENT_PID >/dev/null; then
echo "Starting ssh agent"
eval $(ssh-agent -s)
agent_started=1
fi
# ssh become a function, adding identity to agent when needed
ssh() {
if ! ssh-add -l >/dev/null 2>&-; then
ssh-add ~/.ssh/id_dsa
fi
/usr/bin/ssh "$@"
}
export -f ssh
# another example: git
git() {
if ! ssh-add -l >/dev/null 2>&-; then
ssh-add ~/.ssh/id_dsa
fi
/usr/bin/git "$@"
}
export -f git
modifique o nome do arquivo ~/.ssh/id_dsa
seguindo suas necessidades e adicione essa linha a ~/.bash_logout
# stuff to add at end of ~/.bash_logout
if ((agent_started)); then
echo "Killing ssh agent"
ssh-agent -k
fi
Uma última nota: isso não interfere em uma sessão do gnome, porque nesse caso somente ~/.profile
é originado, e você pode se beneficiar da interface gráfica ssh-askpass
que pede uma frase-senha e a envia para o ssh-agent
.