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.

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
  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.

    Ícone Settings (Configurações) na barra de usuário

  5. In the "Access" section of the sidebar, click SSH and GPG keys.

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

  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.

    Ícone Settings (Configurações) na barra de usuário

  5. In the "Access" section of the sidebar, click SSH and GPG keys.

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

  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.

    Ícone Settings (Configurações) na barra de usuário

  5. In the "Access" section of the sidebar, click SSH and GPG keys.

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

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 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 "Como revisar suas chaves SSH".