Skip to main content

Esta versão do GitHub Enterprise Server foi descontinuada em 2024-07-09. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise Server. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

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@HOSTNAME

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

Shell
ssh -T git@HOSTNAME

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
    

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

Shell
ssh -vT git@HOSTNAME

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 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 do GitHub, clique sua foto de perfil e 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 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 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 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 seu administrador do site 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".