Skip to main content

Erro: permissão negada (publickey)

Uma mensagem de erro "Permission denied" (permissão negada) indica que o servidor rejeitou a sua conexão. Existem diferentes razões para isso acontecer. Os exemplos mais comuns estão descritos abaixo.

Platform navigation

O comando sudo ou os privilégios elevados devem ser usados com o Git?

Você não deve usar o comando sudo nem privilégios elevados, como permissões de administrador, com o Git.

Se você tiver um motivo muito bom para usar o sudo, use-o com todos os comandos. Se você gerar chaves SSH sem o sudo e tentar usar um comando como sudo git push, as mesmas chaves geradas não serão usadas.

Verifique se está conectado ao servidor correto

Insira o segunte comando para confirmar que está conectado ao domínio correto:

Shell
ssh -vT git@github.com

Você deverá ver este resultado:

> OpenSSH_8.1p1, LibreSSL 2.7.3
> debug1: Reading configuration data /Users/YOU/.ssh/config
> debug1: Reading configuration data /etc/ssh/ssh_config
> debug1: /etc/ssh/ssh_config line 47: Applying options for *
> debug1: Connecting to github.com port 22.

A conexão deve ser feita na porta 22, a menos que você esteja substituindo as configurações para usar o SSH por HTTPS.

Sempre utilize o usuário "git"

Todas as conexões devem ser feitas como usuário "git", inclusive aquelas para URLs remotas. Se você tentar se conectar com o seu GitHub nome de usuário, ocorrerá um erro:

$ ssh -T GITHUB-USERNAME@github.com
> Permission denied (publickey).

Se a conexão falhar e você estiver usando uma URL remota com seu nome de usuário do GitHub, altere a URL remota para usar o usuário "git".

Verifique sua conexão digitando:

Shell
ssh -T git@github.com

Você deverá ver este resultado:

> Hi USERNAME! You've successfully authenticated...

Garanta que você tem uma chave que está em uso

  1. Abra TerminalTerminalGit Bash.

  2. Verifique se você tem uma chave privada gerada e carregada em SSH.

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    

Se você tiver o GitHub Desktop instalado, poderá usá-lo para clonar repositórios e não lidar com chaves SSH.

  1. Se você estiver usando o Git Bash, ative o ssh-agent:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    Se você estiver usando outro prompt de terminal, como o Git para Windows, ative o ssh-agent:

    # start the ssh-agent in the background
    $ eval $(ssh-agent -s)
    > Agent pid 59566
    

    Note

    Os comandos eval acima iniciam o ssh-agent manualmente em seu ambiente. Esses comandos poderão falhar se o ssh-agent já estiver sendo executado como um serviço do sistema em segundo plano. Se isso acontecer, recomendamos que você verifique a documentação relevante para o seu ambiente.

  2. Verifique se você tem uma chave privada gerada e carregada em SSH.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    
  1. Abra TerminalTerminalGit Bash.

  2. Verifique se você tem uma chave privada gerada e carregada em SSH.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    

O comando ssh-add deve imprimir uma longa cadeia de caracteres de números e letras. Se ele não imprimir nada, você precisará gerar uma nova chave SSH e associá-la ao GitHub.

Tip

Na maioria dos sistemas, as chaves privadas padrão (~/.ssh/id_rsa e ~/.ssh/identity) são adicionadas automaticamente ao agente de autenticação SSH. Você não precisará executar ssh-add path/to/key, a menos que substitua o nome do arquivo ao gerar uma chave.

Obter mais detalhes

Você também pode verificar se a chave está sendo usada tentando se conectar a git@github.com:

Shell
ssh -vT git@github.com

Você verá uma saída semelhante a esta:

> ...
> debug1: identity file /Users/YOU/.ssh/id_rsa type -1
> debug1: identity file /Users/YOU/.ssh/id_rsa-cert type -1
> debug1: identity file /Users/YOU/.ssh/id_dsa type -1
> debug1: identity file /Users/YOU/.ssh/id_dsa-cert type -1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Trying private key: /Users/YOU/.ssh/id_rsa
> debug1: Trying private key: /Users/YOU/.ssh/id_dsa
> debug1: No more authentication methods to try.
> Permission denied (publickey).

Neste exemplo, o SSH não encontrou nenhuma chave.

  • "-1" no final das linhas do "arquivo de identidade" significa que o SSH não conseguiu encontrar um arquivo para usar.
  • As linhas "Tentando chave privada" indicam que nenhum arquivo foi encontrado.

Se existisse um arquivo, essas linhas seriam "1" e "Oferecendo chave pública", como nesta saída:

> ...
> debug1: identity file /Users/YOU/.ssh/id_rsa type 1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Offering RSA public key: /Users/YOU/.ssh/id_rsa

Verifique se a chave pública está associada à sua conta

Forneça sua chave pública a GitHub para estabelecer uma conexão segura.

  1. Abra o terminal.

  2. Inicie o SSH agent em segundo plano.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    
  3. Encontre e anote a impressão digital da chave pública.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    
  4. No canto superior direito de qualquer página do GitHub, clique sua foto de perfil e, em seguida, clique em Configurações.

  5. Na seção "Acesso" da barra lateral, clique em Chaves SSH e GPG.

  6. Compare a lista de chaves SSH com a saída do comando ssh-add.

  1. Abra a linha de comando.

  2. Inicie o SSH agent em segundo plano.

    $ ssh-agent -s
    > Agent pid 59566
    
  3. Encontre e anote a impressão digital da chave pública.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    
  4. No canto superior direito de qualquer página do GitHub, clique sua foto de perfil e, em seguida, clique em Configurações.

  5. Na seção "Acesso" da barra lateral, clique em Chaves SSH e GPG.

  6. Compare a lista de chaves SSH com a saída do comando ssh-add.

  1. Abra o terminal.

  2. Inicie o SSH agent em segundo plano.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    
  3. Encontre e anote a impressão digital da chave pública. Se estiver usando OpenSSH 6.7 ou anterior:

    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
    

    Se estiver usando OpenSSH 6.8 ou posterior:

    $ ssh-add -l -E md5
    > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
    
  4. No canto superior direito de qualquer página do GitHub, clique sua foto de perfil e, em seguida, clique em Configurações.

  5. Na seção "Acesso" da barra lateral, clique em Chaves SSH e GPG.

  6. Compare a lista de chaves SSH com a saída do comando ssh-add.

Se a chave pública não for exibida no GitHub, você precisará adicionar sua chave SSH ao GitHub para associá-la ao computador.

Warning

Se você receber uma chave SSH com a qual não esteja familiarizado no GitHub, exclua-a imediatamente e entre em contato com o conosco por meio do Portal de suporte do GitHub para obter mais ajuda. Uma chave pública desconhecida pode indicar um possível problema de segurança. Para saber mais, confira Revisar suas chaves SSH.