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 tiver uma razão muito boa para usar o sudo, use-o com todos os comandos (provavelmente, é melhor usar o su para obter um shell como raiz neste ponto). 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

Sabemos que digitar é difícil. Preste atenção ao que digita; você não conseguirá se conectar a "githib.com" ou "guthub.com". Em alguns casos, uma rede corporativa também pode causar problemas ao resolver o registro DNS.

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

$ ssh -vT git@github.com
> 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:

$ ssh -T git@github.com
> 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
    

    Observação: 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.

Dica: 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:

$ ssh -vT git@github.com
> ...
> 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).

Nesse exemplo, não temos nenhuma chave SSH para usar. "-1" ao final das linhas "arquivo de identificação" indica que o SSH não conseguiu encontrar um arquivo para usar. Mais adiante, as linhas "Tentando chave privada" também indicam que o arquivo não foi encontrado. Se existisse um arquivo, as linhas seriam respectivamente "1" e "Apresentando chave pública":

$ ssh -vT git@github.com
> ...
> 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, clique na foto do seu perfil e em Configurações.

    Screenshot of a user's account menu on GitHub. The menu item "Settings" is outlined in dark orange.

  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, clique na foto do seu perfil e em Configurações.

    Screenshot of a user's account menu on GitHub. The menu item "Settings" is outlined in dark orange.

  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, clique na foto do seu perfil e em Configurações.

    Screenshot of a user's account menu on GitHub. The menu item "Settings" is outlined in dark orange.

  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.

Aviso: 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 obter mais informações, confira "Revisar suas chaves SSH".