DEV Community

Felipe Marques
Felipe Marques

Posted on

Usando várias SSH keys e diferentes hubs de git na mesma máquina

Introdução e motivação desse post

Tem bastante conteúdo na internet a respeito do do uso de múltiplas chaves ssh, e a maioria mostra uma forma de gerenciamento usando ~/.ssh/config e a alteração do git remote para que a solução funcione.

Vejam um exemplo disso nesse post criado pelo meu amigo William Koller.

Particularmente eu não gosto muito dessa solução, porque:

  1. me faz ter que alterar em 2 lugares
  2. sempre que eu baixar um repositório, devo me atentar em não esquecer de alterar o remote.
  3. também não posso esquecer de configurar o ~/.ssh/config

Antes de falar da solução que fiz, que julgo ser mais simples, vou postar abaixo alguns links que usei nas minhas pesquisas:

Direto ao ponto

Coloque a function abaixo no seu ~/.bashrc ou ~/.zshrc:

Com a function acima adicionada, salve o arquivo e dê um reload no seu terminal com: $ source ~/.zshrc

Para utilizar, execute: $ changeSSHKey ~/.ssh/{nomedasuachave} (chave privada, não é a chave pública)

O resultado seria esse:
Resultado do uso da function changeSSHKey

Então cada vez que eu quiser alterar a chave pra usar outra conta do Github, Gitlab, Bitbucket, ou qualquer outra ssh para servidor git remoto, simplesmente posso chamar a function acima que faz o que poderia também ser feito de forma manual.

Caso ainda você tenha muitas contas pra ficar lembrando sempre qual a chave correta a ser usada, podemos usar um recurso nativo do shell script, o alias:

alias git-ssh-felipemarques

E então podemos usar assim: $ git-ssh-felipemarques
E o resultado seria:

resultado do comando: alias git-ssh-felipemarques

Uma alternativa ainda mais simples seria o core.sshCommand

Dentro do repositorio configurar:
git config core.sshCommand "ssh -i ~/.ssh/yourprivatekey -F /dev/null"

Conclusão

Deve haver ainda outras possibilidades que eu não tenha conhecimento. Qualquer dúvida entre em contato comigo.

Espero de alguma forma ter contribuído.
Até o próximo post.

Top comments (0)