Alternando entre pares de chaves de autenticação id_rsa no Ubuntu
Antes de começar, um aviso. Esse artigo não pretende explicar como funcionam os pares de chaves públicas e privadas do algoritmo RSA (veja também aqui). Nem vai explicar como criar essas chaves. Vou pressupor que você usa o Ubuntu (Debian ou Linux em geral), e que sabe que no seu diretório $HOME/.ssh você possui o seu par de chaves privado e público, como o comando abaixo mostra:
$ ls ~/.ssh
config id_rsa id_rsa.keystore id_rsa.pub known_hosts
Essas chaves são usadas, principalmente, para promover conexões seguras entre máquinas usando o protocolo SSH. Ocorre que, como esse par de chaves são usados na autenticação entre máquinas, é razoável supor que cada máquina usará apenas um par de chaves. Até então, eu mantinha uma chave em casa e outra aqui na Riopro.
Quando passamos a usar o Git, o uso dessas chaves ficou ainda mais importante. Toda autenticação aos nossos repositórios compartilhados são feitos com essas chaves, porque usamos o Gitosis.
A necessidade de alterar entre as chaves surgiu quando passamos a usar o Github para disponibilizar nossos projetos open-source. Eu acabei possuindo 2 contas, uma da Riopro e outra pessoal, e cada uma teve que ser usada cadastrando apenas uma chave (é a forma como o github identifica se você possui acesso ao repositório). Por isso, acabei criando o script abaixo, chamado change_keys.sh:
$ cat ~/.ssh/change_keys.sh
#!/bin/bashDefault(){
echo "Chaves para $chave"
echo "removendo chaves"
rm ~/.ssh/id_rsa*
echo "copiando chaves"
cp ~/.ssh/$chave/id_rsa* ~/.ssh/
echo "adicionando sua chave à lista de chaves válidas da sessão"
/usr/bin/ssh-add
}
Help() {
echo 'Valores possiveis: -pessoal, -profissional'
}
while [ -n "$1" ]; do
case $1 in
-pessoal) chave="pessoal"; echo "pessoal"; Default ; shift 1 ;;
-profissional) chave="profissional"; echo "profissional"; Default ; shift 1 ;;
-*) Help; exit 1 ;;
*) Help; break ;;
esac
done
Dois passos a mais apenas: 1) crie os diretórios pessoal e profissional dentro do diretório .ssh e coloque as respectivas chaves id_rsa, id_rsa.keystore e id_rsa.pub dentro desses diretórios. Torne o script executável com:
$ chmod a+x ~/.ssh/change_keys.sh
Com isso, para alternar entre as chaves é simples:
$ ~/.ssh/change_keys.sh -pessoal
ou
$ ~/.ssh/change_keys.sh -profissional
Um dos grandes truques desse script é o comando
/usr/bin/ssh-add
Apenas com ele é possível registrar qual a chave atual em uso sem que seja necessário deslogar e logar de novo. Espero que seja útil esse artigo.



Opa, seu script funcionou 100% num Mac aqui, só tem que acertar a separação de linhas (elas estão com dois espaços, e a primeira linha está grudada na segunda).
Obrigado!