Como Configurar Múltiplas Chaves SSH para Várias Contas Git na Mesma Máquina
Quando entrei no meu atual emprego, precisei criar uma conta corporativa no GitHub para acessar a organização da empresa e realizar commits usando-a. Tudo certo. Algum tempo depois, na minha primeira vez trabalhando remotamente, surgiu a necessidade de configurar uma chave SSH na minha máquina pessoal para acessar um repositório privado. O problema é que eu já tinha uma chave configurada para o meu GitHub pessoal.
Foi então que surgiu a dúvida: como configurar múltiplas chaves SSH na mesma máquina para diferentes contas Git?
Na época, não sei se eu não soube pesquisar direito, mas não encontrei um guia simples, direto e centralizado explicando como fazer isso.
Neste artigo, uso o GitHub como base, mas a mesma lógica funciona perfeitamente para GitLab, Bitbucket ou qualquer outro serviço remoto Git.
Criando Uma Nova Chave SSH e Adicionando à Conta no GitHub
Partindo do pressuposto de que seus repositórios remotos estão no GitHub, o próprio guia oficial explica como gerar uma nova chave: https://docs.github.com/pt/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
Porém, de forma resumida, você pode criar uma chave usando o seguinte comando:
ssh-keygen -t ed25519 -C "[email protected]"
Se estiver usando um sistema mais antigo que não oferece suporte ao algoritmo Ed25519, utilize:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Após gerar a chave, copie o conteúdo do arquivo público e cole na sua conta Git (GitHub, GitLab, etc.) na seção SSH Keys.
Importante: substitua os nomes das chaves pelos que você criou, como
id_ed25519_pessoal,id_ed25519_empresa, ou qualquer outro nome que fizer sentido para você.
Modificando o Arquivo de Configuração do SSH
Acesse a pasta onde suas chaves SSH estão armazenadas, normalmente em ~/.ssh/. Dentro dela, procure pelo arquivo config. Caso ele não exista, basta criá-lo.
Em seguida, adicione as seguintes configurações, por exemplo:
# Conta Pessoal
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
# Conta Corporativa
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
Aqui estamos definindo dois hosts diferentes que apontam para o mesmo servidor (github.com). Cada um utiliza uma chave distinta. Assim, ao usar github.com ou github.com-work como host no remote, o Git saberá exatamente qual identidade SSH usar.
Lembre-se: substitua os nomes dos arquivos
.ssh/id_ed25519_personale.ssh/id_ed25519_workpelos nomes reais das suas chaves.
Clonando o Repositório Corporativo
Para clonar um repositório usando a sua chave corporativa, ajuste o host na URL SSH para o nome definido no arquivo ~/.ssh/config.
Exemplo de URL SSH fornecida pelo GitHub:
[email protected]:[empresa]/[repositório].git
URL usando a chave corporativa:
[email protected]:[empresa]/[repositório].git
Com isso, o git clone passa a usar automaticamente a chave SSH definida para github.com-work.
Outra Opção: Criando um .gitconfig Personalizado Por Pasta
Existe ainda uma alternativa para evitar a necessidade de modificar manualmente os URLs SSH de cada repositório, que particularmente prefiro.
Você pode criar um .gitconfig específico para a pasta onde ficam todos os repositórios corporativos.
No arquivo principal ~/.gitconfig, adicione:
[includeIf "gitdir:~/projetos/empresa/"]
path = ~/projetos/empresa/.gitconfig-work
Com isso, sempre que você estiver em qualquer repositório dentro dessa pasta, o Git usará automaticamente o .gitconfig-work, carregando as configurações do arquivo.
Agora crie o arquivo:
~/projetos/empresa/.gitconfig-work
E insira algo como:
[user]
name = usuario_corporativo
email = [email protected]
[url "[email protected]:"]
insteadOf = [email protected]:
[core]
sshCommand = ssh -i ~/.ssh/id_ed25519_work
Aqui temos três coisas importantes:
- Identidade Git personalizada
Todos os repositórios dentro dessa pasta usam automaticamente o nome e o e-mail corporativos. - Reescrita automática dos URLs
O bloco[url]garante que qualquer URL iniciado com[email protected]:seja substituído por[email protected]:.
Isso permite usar o endereço padrão fornecido pelo GitHub sem precisar ajustá-lo manualmente. - Uso automático da chave SSH corporativa
A opçãosshCommandforça o Git a usar a chave corporativa específica em todos os repositórios dessa pasta, independentemente do host usado no remote.
Esse método é extremamente útil para separar ambientes pessoal e corporativo na mesma máquina, mantendo tudo organizado, coerente e com o mínimo de intervenção manual.
Você pode usar os mesmos conceitos para GitHub, GitLab, Bitbucket ou qualquer outro serviço Git que utilize SSH.
Se você trabalha com várias contas Git ou múltiplos projetos com identidades diferentes, configurar múltiplas chaves SSH é a forma mais prática, limpa e segura de gerenciar tudo no mesmo computador.
Post realizado originalmente no meu blog: freitaschz.com