image

Access unlimited bootcamps and 650+ courses forever

60
%OFF
Article image
ARIOSTO LEAL
ARIOSTO LEAL17/10/2025 00:58
Share

🔐 Solução Definitiva para Autenticação SSH no GitHub

  • #GitHub
  • #Git
  • #GitHub Copilot

Introdução:

Se você já trabalhou com múltiplas contas no GitHub (pessoal e profissional, por exemplo) ou se deparou com o frustrante erro Permission denied (publickey), sabe o quão demorado pode ser resolver o problema de autenticação. A confusão entre o protocolo HTTPS e o gerenciador de credenciais do Windows frequentemente leva a falhas.

A solução mais robusta é migrar para o protocolo SSH e garantir que o seu sistema use a chave correta para a conta certa.

Este artigo é um resumo prático de um processo de depuração real que resolveu falhas de autenticação em múltiplas etapas.

🔑 4 Passos para Resolver Conflitos de Autenticação SSH no GitHub

O erro Permission denied (publickey) significa que seu sistema está enviando uma chave que o GitHub não reconhece ou que está bloqueada.

Passo 1: Iniciar e Limpar o Agente SSH

O ssh-agent armazena suas chaves privadas desbloqueadas para que você não precise digitar a passphrase a cada operação.

  1. Inicie o Agente (no Git Bash):
  2. Bash

eval "$(ssh-agent -s)"
  1. (Retorno esperado: Agent pid <número>)
  2. Limpe Chaves Antigas: É crucial garantir que o agente não esteja usando chaves antigas ou bloqueadas (que podem ter passphrase incorreta).
  3. Bash

ssh-add -D
  1. (Retorno esperado: All identities removed.)

Passo 2: Localizar e Adicionar a Chave Correta

Sua chave privada precisa estar carregada no ssh-agent.

  1. Liste as Chaves Existentes (no Git Bash): Confirme o nome exato do arquivo da chave privada que você criou e cadastrou no GitHub (sem a extensão .pub).
  2. Bash

ls -al ~/.ssh
  1. Dica: Procure por arquivos como id_rsa, id_ed25519, ou o nome que você usou, como id_ed25519_ary_leal_new.
  2. Adicione a Chave Correta: Substitua NOME_DA_CHAVE pelo nome do arquivo que você encontrou:
  3. Bash

ssh-add ~/.ssh/NOME_DA_CHAVE
  1. Se a chave tiver uma passphrase, você precisará digitá-la corretamente. Caso contrário, considere gerar uma nova chave sem passphrase para eliminar o obstáculo (veja a seção "Solução para Passphrase Perdida" abaixo).

Passo 3: Corrigir o Arquivo de Configuração SSH (~/.ssh/config)

Este é o ponto de falha mais comum. O Git pode estar instruído a usar um arquivo de chave incorreto.

  1. Visualize o Conteúdo:
  2. Bash

cat ~/.ssh/config
  1. Edite e Corrija o IdentityFile: Abra o arquivo (notepad ~/.ssh/config) e garanta que a linha IdentityFile aponte para o caminho e nome de arquivo CORRETO da chave carregada no Passo 2.
  2. Exemplo de configuração correta:
  3. Snippet de código

Host github.com
  HostName github.com
  User git
  IdentityFile C:\Users\SEU_USUARIO\.ssh\id_ed25519_ary_leal_new
  IdentitiesOnly yes

Passo 4: Testar e Fazer o Push Final

Com o agente limpo e a configuração corrigida, faça o teste de conexão.

  1. Teste a Conexão SSH (Autenticação):
  2. Bash

ssh -T git@github.com
  • Sucesso: Se a sua chave estiver cadastrada no GitHub, você verá: Hi <Seu_Usuário>! You've successfully authenticated...
  1. Faça o Push: Navegue até o seu projeto e faça o push.
  2. Bash

cd /c/caminho/do/projeto
git push --set-upstream origin main
  1. Se a autenticação funcionar, suas alterações serão enviadas, e a branch será configurada.

🛠️ Solução para Passphrase Perdida ou Chave Inválida

Se a sua chave estiver bloqueada (erro Bad passphrase) ou se o GitHub rejeitar a chave por formato (Key is invalid), a melhor solução é gerar uma nova.

  1. Gere a Nova Chave (sem passphrase para evitar problemas futuros):
  2. Bash

ssh-keygen -t ed25519 -C "nome-da-chave-nova" -f ~/.ssh/id_ed25519_nome_novo
# Deixe a passphrase em branco (pressione Enter duas vezes)
  1. Copie a Chave Pública e Cole no GitHub (Manualmente):
  • Exiba a chave no terminal: cat ~/.ssh/id_ed25519_nome_novo.pub
  • Copie o texto inteiro manualmente (do ssh-ed25519 até o comentário final).
  • Vá para GitHub (Conta Correta!) > Settings > SSH and GPG keys e cole o conteúdo no campo "Key".
  1. Continue a partir do Passo 1, usando o nome da nova chave.

🌐 Gerenciamento de Múltiplas Contas (Próxima Etapa)

Para evitar conflitos futuros entre contas (ex: Ary-Leal e yostto-leal), use a técnica de Aliases SSH.

  1. Crie uma chave separada para a segunda conta.
  2. Adicione um Host Alias no seu ~/.ssh/config:
  3. Snippet de código

Host github-yostto # Novo Alias
  HostName github.com
  User git
  IdentityFile C:\Users\SEU_USUARIO\.ssh\id_ed25519_yostto_leal # Nova Chave
  IdentitiesOnly yes
  1. Ao clonar repositórios da segunda conta, use o alias na URL:
  • git clone git@github-yostto:yostto-leal/projeto.git

Parabéns por dominar o SSH! Essa é uma habilidade essencial que garante um fluxo de trabalho seguro e livre de conflitos.

#Git #GitHub #SSH #DevOps #Programação #Autenticação

Share
Recommended for you
Microsoft 50 Anos - GitHub Copilot
Microsoft AI for Tech - GitHub Copilot
Cognizant - Mobile Developer
Comments (0)