Configurando múltiplas contas do GitHub com SSH para uso no mesmo computador
Publicado em 3 de agosto de 2019
Introdução
Esta publicação é mais como um lembrete de como fazer, ao invés de um passo-a-passo extremamente detalhado. Mais ou menos como o outro post sobre configurações no Ubuntu. Para gerar os arquivos com as chaves, e importar eles no GitHub, é só pesquisar por tutoriais no Google.
Cenário
- Você usa o mesmo computador para trabalhar em projetos pessoais e do trabalho;
- Você tem duas contas no GitHub, uma pessoal e outra do trabalho, e cada uma tem acesso a diferentes repositórios;
- Você não quer commitar nos repositórios pessoais com o usuário do trabalho.
Como se faz
Criar os arquivos com as chaves para a conta pessoal e a conta do trabalho. Criei eles com nomes
id_rsa_trabalho
eid_rsa_pessoal
, ambos no diretório~/.ssh
;Incluir a chave correta em cada conta do GitHub;
Acessar o arquivo global de configuração do git no computador, no meu caso
~/.gitconfig
, e adicionar o seguinte código:``` [includeIf "gitdir:~/diretorio/do/trabalho/"] path = ./.gitconfig-trabalho [includeIf "gitdir:~/diretorio/pessoal/"] path = ./.gitconfig-pessoal ``` No exemplo da referência #1, ele adiciona diretamente o código que deveria ser incluído, o que não
funcionou para mim. Eu tive que criar mais dois arquivos e botar a configuração dentro deles.
Criar dois novos arquivos no mesmo local do
.gitconfig
, com os nomes definidos acima, novamente no meu caso.gitconfig-trabalho
e.gitconfig-pessoal
. O conteúdo deles, respectivamente:``` [user] email = seuemaildetrabalho@meuemprego.com [core] sshCommand = "ssh -i ~/.ssh/id_rsa_trabalho" ``` ``` [user] email = seuemailpessoal@algumacoisa.com [core] sshCommand = "ssh -i ~/.ssh/id_rsa_pessoal" ``` Qualquer outra configuração pode ser colocada nestes arquivos. É como se fosse um `import`.
Agora cada repositório dentro dos diretórios que você especificou acima usarão os endereços de email e arquivos corretos. Mas eles precisam de uma configuração importante: a URL do
origin
precisa estar configurada comgit@github.com
ao invés dohttps
:``` [remote "origin"] url = git@github.com:rodrigosaling/rodrigosaling.com.git ``` Quando você clona um repositório, o GitHub já te dá essa opção.
Para testar se as configurações estão funcionando, acesse os diretórios de diferentes repositórios e rode
git config --list
. Se tudo estiver certinho, ele vai exibir os dados corretos após oinclude
, que ele usou, mais ou menos assim:``` includeif.gitdir:~/diretorio/do/trabalho/.path=./.gitconfig-trabalho includeif.gitdir:~/diretorio/pessoal/.path=./.gitconfig-pessoal user.email=seuemailpessoal@algumacoisa.com core.sshcommand=ssh -i ~/.ssh/id_rsa_pessoal ```
E era isso!