Documentação: Usando múltiplas contas GitHub no mesmo computador | Artigos Git
- Documentação: Usando múltiplas contas GitHub no mesmo computador | Artigos Git
Gerenciar duas (ou mais) contas GitHub — por exemplo, uma pessoal e uma corporativa — na mesma máquina pode parecer simples no começo, mas envolve entender bem como o Git e o SSH decidem qual configuração usar em cada repositório.
Abaixo está um passo a passo detalhado e documentado dessa configuração.
⚙️ Conceitos-Chave
🧩 Arquivos de configuração envolvidos
| Arquivo | Função |
|---|---|
~/.ssh/config | Define quais chaves SSH usar para cada host. |
~/.gitconfig | Configuração global do Git (usuário padrão, e-mails, etc.). |
~/.gitconfig-company | Configuração específica para projetos da empresa. |
~/.ssh/id_ed25519* | Chaves privadas SSH para autenticação com o GitHub. |
Esses arquivos trabalham em conjunto para garantir que:
- Cada conta use a chave SSH correta.
- Cada repositório use o usuário Git correto.
- As configurações mudem automaticamente conforme a pasta do projeto.
🪪 Passo 1 — Criar chaves SSH separadas
Crie uma chave para cada conta GitHub:
# Conta pessoal
ssh-keygen -t ed25519 -C "seu_email_pessoal@gmail.com" -f ~/.ssh/id_ed25519
# Conta corporativa
ssh-keygen -t ed25519 -C "seu_email@empresa.com" -f ~/.ssh/id_ed25519_company
Adicione ambas ao seu agente SSH para evitar digitar a senha repetidamente:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ssh-add ~/.ssh/id_ed25519_company
Copie as chaves públicas (.pub) e adicione-as às suas contas GitHub (em Settings → SSH and GPG keys).
🔑 Passo 2 — Configurar o arquivo ~/.ssh/config
Este arquivo diz ao SSH qual chave usar para qual host.
# Conta pessoal
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
# Conta corporativa
Host github-company
HostName github.com
IdentityFile ~/.ssh/id_ed25519_company
IdentitiesOnly yes
💡 Dica:
- O alias
github-companyé apenas um nome alternativo que aponta para o mesmoHostName(github.com), mas com outra chave. - A opção
IdentitiesOnly yesgarante que o SSH use apenas a chave especificada, evitando confusões com outras chaves carregadas no agente.
🧩 Passo 3 — Configuração global do Git (~/.gitconfig)
Defina suas informações pessoais como padrão, e use includeIf para importar configurações de trabalho somente dentro de pastas específicas.
[user]
name = Seu Nome
email = seu_email_pessoal@gmail.com
[includeIf "gitdir:~/work-projects/"]
path = ~/.gitconfig-company
Isso significa que:
- Em qualquer repositório fora da pasta
~/work-projects/, suas credenciais pessoais são usadas. - Dentro de
~/work-projects/, o Git vai carregar automaticamente o arquivo~/.gitconfig-company.
🏢 Passo 4 — Configuração de trabalho (~/.gitconfig-company)
Configure suas informações corporativas e redirecione as URLs do GitHub para o alias github-company.
[user]
name = Seu Nome (Empresa)
email = seu_email@empresa.com
[url "git@github-company:"]
insteadOf = git@github.com:
insteadOf = https://github.com/
🔍 Como funciona:
- Quando você clonar um repositório da empresa, o Git substituirá automaticamente
github.comporgithub-company. - Isso faz com que o SSH use a chave corporativa correta.
🗂️ Passo 5 — Organize seus projetos por pastas
Estruture seus diretórios para facilitar o controle automático:
~/personal-projects/ → usa conta pessoal
~/work-projects/ → usa conta corporativa
Assim, você pode clonar normalmente:
# Projeto pessoal
cd ~/personal-projects/
git clone git@github.com:seu-usuario/repositorio.git
# Projeto corporativo
cd ~/work-projects/
git clone git@github.com:empresa/repositorio.git
E o Git/SSH cuidarão do resto — sem trocas manuais, sem erros de identidade.
🚀 Resultado Final
✅ Cada conta GitHub usa sua própria chave SSH. ✅ Cada pasta usa o usuário Git correto. ✅ Nenhum conflito entre repositórios pessoais e corporativos. ✅ Segurança e automação garantidas.
🧩 Dica extra: Testando suas conexões
Verifique qual chave SSH está sendo usada:
ssh -T git@github.com
ssh -T git@github-company
Se tudo estiver certo, você verá mensagens do tipo:
Hi seu-usuario! You've successfully authenticated, but GitHub does not provide shell access.
Hi empresa! You've successfully authenticated, but GitHub does not provide shell access.