Skip to main content

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

ArquivoFunção
~/.ssh/configDefine quais chaves SSH usar para cada host.
~/.gitconfigConfiguração global do Git (usuário padrão, e-mails, etc.).
~/.gitconfig-companyConfiguraçã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 mesmo HostName (github.com), mas com outra chave.
  • A opção IdentitiesOnly yes garante 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.com por github-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.