Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

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@HOSTNAME
> 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 HOSTNAME port 22.

A conexão deve ser feita na porta 22.

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 Enterprise Server nome de usuário, ocorrerá um erro:

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

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

Verifique sua conexão digitando:

$ ssh -T git@HOSTNAME
> 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 Enterprise Server.

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@[hostname]:

$ ssh -vT git@HOSTNAME
> ...
> 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@HOSTNAME
> ...
> 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 Enterprise Server 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. Na barra lateral de configurações do usuário, clique em Chaves SSH e GPG. Chaves de autenticação

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

  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. Na barra lateral de configurações do usuário, clique em Chaves SSH e GPG. Chaves de autenticação

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

  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. Na barra lateral de configurações do usuário, clique em Chaves SSH e GPG. Chaves de autenticação

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

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

Aviso: se você receber uma chave SSH com a qual não esteja familiarizado no GitHub Enterprise Server, exclua-a imediatamente e entre em contato com o your site administrator 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".