Adicionar chaves ssh automaticamente ao agente no login do shell

Se você tiver algumas chaves ssh para usar em vários servidores, poderá gerenciá-las de várias maneiras. Uma maneira é adicioná-los ao seu agente ssh via ssh-add path/to/key. No entanto, você deve se lembrar de fazer isso sempre que fizer login.

No meu caso, todas as minhas chaves estavam localizadas em uma ~/.ssh/keyspasta. Ao iterar a lista de chaves privadas (que não terminam em .pub) e ssh-addusar cada uma, seu agente ssh está totalmente preparado no login. Eu adicionei isso ao meu .bash_profile:

find ~/.ssh/keys -not -name '*.pub' -type f | xargs ssh-add

Se você tiver senhas em suas chaves SSH, será solicitado que você as insira. No entanto, no Mac OS X, seus scripts de login serão executados sempre que uma nova janela de terminal for aberta, então você acaba digitando suas senhas repetidamente. Ao comparar a lista de chaves conhecidas com a lista de chaves já encontradas em seu ssh-agent (usando comm), você pode garantir que terá que inserir suas senhas apenas uma vez.

comm -3 
<(ssh-add -l | sed -n '/no identities/!p' | cut -d' ' -f3)
<(find ~/.ssh/keys -not -name '*.pub' -type f)
| xargs ssh-add

Nota final: se você estiver usando o Mac OS X, também pode usar apenas o -Ksinalizador ao chamar ssh-add, o que manterá suas chaves para as Chaves do usuário. No meu caso, queria saber como resolver o problema sem armazenar minhas chaves em qualquer outro lugar onde pudessem estar potencialmente comprometidas.