Strict Standards: Non-static method themeGluedIdeas_Subtle::initOptions() should not be called statically in /home/riopro/www/blog.riopro.com.br/wp-content/themes/gluedideas_subtle/header.php on line 19
Riopro Blog - » Alternando entre pares de chaves de autenticação id_rsa no Ubuntu

Alternando entre pares de chaves de autenticação id_rsa no Ubuntu



Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

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.

Informações e Links

Junte-se comentando, lendo o que os outros dizem ou colocando um link a partir do seu blog.


Outros Artigos

Strict Standards: Only variables should be assigned by reference in /home/riopro/www/blog.riopro.com.br/wp-includes/post.php on line 117
Rspec e os testes para diferentes formatos

Strict Standards: Only variables should be assigned by reference in /home/riopro/www/blog.riopro.com.br/wp-includes/post.php on line 117
Alternando facilmente entre várias versões do Ruby no Ubuntu

Comente

Tire um tempo para comentar e nos dizer o que você acha. Alguns códigos HTML são permitidos para formatação.

Comentários dos Leitores


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

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!