Tentei a solução do @ Aaron e não funcionou muito para mim, porque adicionava minhas chaves novamente toda vez que eu abria uma nova guia no meu terminal. Então eu o modifiquei um pouco (observe que a maioria das minhas chaves também é protegida por senha, então não posso simplesmente enviar a saída para / dev / null):
added_keys=`ssh-add -l`
if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
ssh-add "$HOME/.ssh/my_key"
fi
O que isso faz é que ele verifique a saída de ssh-add -l (que lista todas as chaves que foram adicionadas) para uma chave específica e, se não a encontrar, a adicionará ssh-add.
Agora, na primeira vez em que abro meu terminal, as senhas das minhas chaves privadas são solicitadas e não são solicitadas novamente até que eu reinicie (ou saia - não verifiquei) meu computador.
Como tenho um monte de chaves, guardo a saída de ssh-add -l uma variável para melhorar o desempenho (pelo menos acho que melhora o desempenho :))
PS: Estou no Linux e esse código foi para o meu ~/.bashrcarquivo - se você estiver no Mac OS X, presumo que você deve adicioná-lo .zshrcou.profile
EDIT: Como apontado por @Aaron nos comentários, o .zshrcarquivo é usado no zshshell - portanto, se você não estiver usando isso (se não tiver certeza, provavelmente bashusará), esse código deve vá para o seu .bashrcarquivo.