git / Guias

Git SSH: como resolver Permission denied (publickey)

Esse erro indica que o servidor SSH rejeitou a autenticação. Os exemplos usam github.com; outros provedores e servidores corporativos podem exigir configurações diferentes.

Os exemplos usam Bash; consulte as referências para os detalhes do seu ambiente.

Confira o remoto e o protocolo

Execute o comando dentro do repositório. Um remoto HTTPS usa credenciais HTTPS; corrigir uma chave SSH não altera essa conexão. Uma URL SSH do GitHub normalmente começa com git@github.com:.

git remote -v

No github.com, o usuário SSH é git, não o nome da sua conta. Confira o proprietário e o nome do repositório antes de mudar o remoto. Trocar o protocolo pode esconder a causa original.

Confira as chaves disponíveis no agente

Liste as identidades disponíveis no agente SSH da sessão. Não haver identidades é diferente de o agente estar indisponível. A configuração depende do sistema operacional e do terminal.

ssh-add -l

Se a chave existente não estiver carregada, adicione seu caminho real, por exemplo ssh-add ~/.ssh/id_ed25519. Cadastre a chave pública .pub correspondente na conta GitHub correta. Mantenha a chave privada no dispositivo; não a cole em um site.

Teste a autenticação com o GitHub

Antes de aceitar uma nova chave do servidor, compare sua impressão digital com as impressões SSH publicadas pelo GitHub, acessíveis pelo guia oficial abaixo. Depois execute o teste.

ssh -T git@github.com

A mensagem de sucesso do GitHub identifica sua conta e informa que não oferece acesso shell. Esse teste bem-sucedido normalmente termina com código 1. Se continuar falhando, ssh -vT git@github.com mostra as identidades oferecidas. Usar Git com sudo pode selecionar as chaves de outro usuário.

Separe autenticação e acesso ao repositório

Depois de um teste SSH bem-sucedido, confira a leitura do repositório. O comando lista referências remotas sem alterar branches locais.

git ls-remote origin

A conta autenticada também precisa de acesso ao repositório. Confira a URL, a participação na organização e a autorização SSO necessária. Uma deploy key pode estar limitada a um repositório. Se nenhuma chave existir, siga a configuração do provedor sem sobrescrever uma chave existente.

Referências

Todos os guias