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:
- me faz ter que alterar em 2 lugares
- sempre que eu baixar um repositório, devo me atentar em não esquecer de alterar o remote.
- 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:
- https://betterprogramming.pub/how-to-set-up-multiple-ssh-keys-ae6688f76570
- https://docs.github.com/pt/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
- https://gist.github.com/jexchan/2351996
- https://gist.github.com/oanhnn/80a89405ab9023894df7
- https://gist.github.com/aprilmintacpineda/f101bf5fd34f1e6664497cf4b9b9345f
- https://gist.github.com/carlosmcevilly/3911775
- https://www.section.io/engineering-education/using-multiple-ssh-keys-for-multiple-github-accounts/
- https://vanthanhtran245.github.io/use-multiple-ssh-key-for-different-git-accounts/
- https://psychowhiz.medium.com/configuring-multiple-ssh-keys-for-git-on-the-same-device-41c29320e5fe
- https://coderwall.com/p/7smjkq/multiple-ssh-keys-for-different-accounts-on-github-or-gitlab
- https://github.com/tw-yshuang/Git_SSH-Account_Switch
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)
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:
E então podemos usar assim: $ git-ssh-felipemarques
E o resultado seria:
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)