DEV Community

Felipe Marques
Felipe Marques

Posted on

2

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:

function changeSSHKey() {
killall -9 ssh-agent
eval "$(ssh-agent -s)"
echo "change sssh key to: ... $1"
ssh-add $1
ssh-add -L
}
view raw gistfile1.txt hosted with ❤ by GitHub

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.

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post