Back

Corrigir 'Permission denied (publickey)' ao Fazer Push para o GitHub

Corrigir 'Permission denied (publickey)' ao Fazer Push para o GitHub

Recebendo um erro ‘Permission denied (publickey)’ ao tentar fazer push para o GitHub? Este erro significa que o GitHub não consegue autenticá-lo devido a um problema com a chave SSH. Vamos corrigir isso rapidamente.

Pontos-Chave

  • O erro ocorre quando o GitHub não consegue autenticar sua conexão SSH
  • Três causas principais: chaves SSH ausentes, chaves não adicionadas ao GitHub ou formato incorreto da URL remota
  • Teste sua conexão com ssh -T git@github.com para verificar se a correção funcionou
  • O agente SSH e arquivos de configuração ajudam a gerenciar múltiplas contas ou autenticação persistente

O Que Este Erro Significa

O erro ‘Permission denied (publickey)’ acontece quando o Git tenta se conectar ao GitHub usando SSH, mas a autenticação falha. Pense nas chaves SSH como uma senha especial que permite que seu computador converse com o GitHub de forma segura.

Este guia cobre as três causas principais e mostra exatamente como corrigir cada uma delas.

As Três Causas Principais (E Como Corrigi-las)

1. Nenhuma Chave SSH Criada no Seu Computador

Verificação Rápida:

ls -la ~/.ssh

Se você ver “No such file or directory” (Diretório não encontrado) ou a pasta estiver vazia, você precisa criar chaves SSH.

Correção: Gere um novo par de chaves SSH:

ssh-keygen -t ed25519 -C "seu-email@exemplo.com"

Pressione Enter três vezes para aceitar os padrões. Isso cria dois arquivos:

  • ~/.ssh/id_ed25519 (chave privada - mantenha em segredo)
  • ~/.ssh/id_ed25519.pub (chave pública - compartilhe com o GitHub)

2. Chave Pública Não Adicionada ao GitHub

Mesmo com as chaves SSH criadas, o GitHub não vai reconhecê-lo até que você adicione sua chave pública à sua conta.

Correção: Primeiro, copie sua chave pública:

cat ~/.ssh/id_ed25519.pub

Depois adicione-a ao GitHub:

  1. Vá para Configurações SSH do GitHub
  2. Clique em “New SSH key” (Nova chave SSH)
  3. Cole sua chave e salve

3. Formato Incorreto da URL Remota

As URLs SSH do GitHub devem começar com git@github.com: - não com seu email ou nome de usuário.

Verifique sua URL atual:

git remote -v

Formato correto:

git@github.com:username/repository.git

Formatos incorretos:

seuemail@github.com:username/repository.git  ❌
https://github.com/username/repository.git    ❌ (isso é HTTPS, não SSH)

Correção: Atualize para a URL SSH correta:

git remote set-url origin git@github.com:username/repository.git

Verifique se Tudo Está Funcionando

Teste sua conexão SSH com o GitHub:

ssh -T git@github.com

Você deve ver:

Hi username! You've successfully authenticated...

Se isso funcionar, agora você pode fazer push para o GitHub sem o erro de permissão negada.

Problemas Comuns de Solução

Agente SSH Não Está Executando

Se sua chave existe mas ainda não funciona, o agente SSH pode não estar em execução.

Correção:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Múltiplas Contas do GitHub

Gerenciar múltiplas contas requer um arquivo de configuração SSH. Crie ~/.ssh/config:

Host github.com-work
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_work

Host github.com-personal
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_personal

Depois clone usando:

git clone git@github.com-work:company/repository.git

Notas Específicas por Plataforma

  • Usuários Windows: Use o Git Bash em vez do Prompt de Comando ou PowerShell
  • Usuários macOS/Linux: Use o Terminal

Ambas as plataformas seguem os mesmos comandos mostrados acima.

Conclusão

O erro ‘Permission denied (publickey)’ é frustrante, mas fácil de corrigir. Na maioria dos casos, você só precisa criar chaves SSH e adicionar a chave pública ao GitHub. Lembre-se de verificar sua conexão com ssh -T git@github.com antes de fazer push.

Uma vez configurado corretamente, você nunca mais verá este erro para aquele repositório.

Perguntas Frequentes

Embora seja tecnicamente possível, a melhor prática é criar pares de chaves separados para cada conta. Isso melhora a segurança e facilita a solução de problemas ao gerenciar diferentes repositórios.

SSH é mais conveniente uma vez configurado, pois você não precisa de senhas para cada push. HTTPS funciona em qualquer lugar, mas requer tokens de autenticação ou senhas para cada operação.

Não. Adicione sua chave ao agente SSH usando ssh-add para armazenar a senha em cache durante sua sessão. Dessa forma, você só a digita uma vez por sessão.

Gere imediatamente um novo par de chaves e atualize o GitHub com a nova chave pública. Remova a chave comprometida das configurações do GitHub e nunca compartilhe chaves privadas.

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay