Uso uma solução que é um pouco mais complicada, mas muito versátil, pois quero manter alguma separação nas chaves de identidade SSH usadas para meus servidores de rede doméstica, servidores de escritório, servidores de rede de clientes consultores e outros sistemas em que tenho contas.
Agora que eu disse que trabalho quase exclusivamente em estações de trabalho Linux, tenho uma chave USB configurada usando a criptografia LUKS e meu gerenciador de janelas X11 junto com o daemon HAL detecta a unidade criptografada LUKS e solicita a senha de descriptografia quando é inserida e tenta ser montado. Armazenando isso em uma unidade criptografada da maneira que faço, nunca armazeno minhas chaves SSH em nenhuma estação de trabalho.
Em seguida, tenho a seguinte configuração no meu ~/.ssh/config
arquivo:
Host *
Protocol 2
IdentityFile %d/.ssh/keys.d/id_rsa.%l
IdentityFile %d/.ssh/keys.d/id_dsa.%l
IdentityFile %d/.ssh/keys.d/%u@%l
O % d é convertido para o diretório inicial do usuário pelo OpenSSH e no diretório ~ / .ssh eu criei o keys.d como um link simbólico para o caminho do diretório na unidade USB criptografada quando montada corretamente.
A expressão % l é traduzida como o nome do host das máquinas clientes locais e % u será convertida no nome de usuário do cliente local.
O que essa configuração faz é permitir que o SSH procure uma chave usando 3 expressões diferentes. Por exemplo, se o nome de usuário do jdoe
meu cliente local fosse e o nome da máquina do cliente local, examplehost
ele procuraria na seguinte ordem até encontrar uma chave que existisse e fosse aceita pelo servidor remoto.
/home/jdoe/.ssh/keys.d/id_rsa.examplehost
/home/jdoe/.ssh/keys.d/id_dsa.examplehost
/home/jdoe/.ssh/keys.d/jdoe@examplehost
Você pode usar a expressão % r para procurar uma chave específica para o nome de usuário do servidor remoto ou % h para o nome do host do servidor remoto, exatamente como % u e % l foram usados.
Atualização: Agora eu realmente utilizo o GnuPG gpg-agent com compatibilidade ssh-agent para apenas ler e usar a chave de autenticação do meu cartão inteligente OpenPGP v2.