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!