Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Esta versão do GitHub Enterprise será descontinuada em Esta versão do GitHub Enterprise foi descontinuada em 2020-05-23. No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise. For help with the upgrade, contact GitHub Enterprise support.

Versão do artigo: Enterprise Server 2.17

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.

Neste artigo

O comando sudo deve ser usado com o Git?

Você não deve usar o comando sudo com o Git. Caso você tenha uma razão muito boa para usar sudo, assegure-se de usá-lo com todos os comandos (talvez seja melhor usar su para obter um shell como root nesse ponto). Se você gerar chaves SSH sem sudo e depois tentar usar um comando como sudo git push, você não estará usando as mesmas chaves que gerou.

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_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
> debug1: Lendo dados de configuração /Users/you/.ssh/config
> debug1: Lendo dados de configuração /etc/ssh_config
> debug1: Solicitando opções para *
> debug1: Conectando a hostname [IP ADDRESS] 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 nome de usuário, ocorrerá um erro:

$ ssh -T GITHUB-USERNAME@hostname
> Permissão negada (publickey).

Se houver uma falha na conexão ao usar um URL remoto com seu nome de usuário GitHub Enterprise, você pode alterar a URL remota para o usuário "git".

Verifique sua conexão digitando:

$ ssh -T git@hostname
> Olá username! Você conseguiu se autenticar...

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

  1. Open TerminalTerminalGit Bash.

  2. Verifique se você tem uma chave privada gerada e carregada em SSH. Se estiver usando OpenSSH 6.7 ou anterior:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

    Se estiver usando OpenSSH 6.8 ou posterior:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l -E md5
    > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

Se você tiver o GitHub Desktop instalado, você pode usá-lo para clonar repositórios sem usar chaves SSH. Ele também tem a ferramenta Git Bash, que é o modo preferido de executar comandos git no Windows.

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

    # iniciar o ssh-agent em segundo plano
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566

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

    # Iniciar o ssh-agent em segundo plano
    $ eval $(ssh-agent -s)
    > Agent pid 59566
  2. Verifique se você tem uma chave privada gerada e carregada em SSH. 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/you/.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/you/.ssh/id_rsa (RSA)
  1. Open TerminalTerminalGit Bash.

  2. Verifique se você tem uma chave privada gerada e carregada em SSH. Se estiver usando OpenSSH 6.7 ou anterior:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

    Se estiver usando OpenSSH 6.8 ou posterior:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l -E md5
    > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

O comando ssh-add deverá imprimir uma string longa com números e letras. Caso isso não aconteça, você deverá gerar uma nova chave SSH e associá-la a GitHub Enterprise.

Tip: On most systems the default private keys (~/.ssh/id_rsa, ~/.ssh/id_dsa and ~/.ssh/identity) are automatically added to the SSH authentication agent. Não há necessidade de executar ssh-add path/to/key, a não ser que você substitua o nome do arquivo ao gerar uma chave.

Obter mais detalhes

Você também pode verificar a chave que está sendo usada tentando se conectar a git@[hostname]:

$ ssh -vT git@hostname
> ...
> debug1: Arquivo de identificação /Users/you/.ssh/id_rsa type -1
> debug1: Arquivo de identificação /Users/you/.ssh/id_rsa-cert type -1
> debug1: Arquivo de identificação /Users/you/.ssh/id_dsa type -1
> debug1: Arquivo de identificação /Users/you/.ssh/id_dsa-cert type -1
> ...
> debug1: Autenticações que podem prosseguir: publickey
> debug1: Próximo método de autenticação: publickey
> debug1: Tentando chave privada: /Users/you/.ssh/id_rsa
> debug1: Tentando chave privada: /Users/you/.ssh/id_dsa
> debug1: Não há mais métodos de autenticação para tentar.
> Permissão negada (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: arquivo de identificação /Users/you/.ssh/id_rsa type 1
> ...
> debug1: Autenticações que podem prosseguir: publickey
> debug1: Próximo método de autenticação: publickey
> debug1: Apresentando chave pública RSA: /Users/you/.ssh/id_rsa

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

Forneça sua chave pública a GitHub Enterprise 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. 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. In the upper-right corner of any page, click your profile photo, then click Settings.

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

  5. In the user settings sidebar, click SSH and GPG keys.

    Authentication keys

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

    Lista de chaves SSH em GitHub Enterprise

  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. 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. In the upper-right corner of any page, click your profile photo, then click Settings.

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

  5. In the user settings sidebar, click SSH and GPG keys.

    Authentication keys

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

    Lista de chaves SSH em GitHub Enterprise

  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. In the upper-right corner of any page, click your profile photo, then click Settings.

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

  5. In the user settings sidebar, click SSH and GPG keys.

    Authentication keys

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

    Lista de chaves SSH em GitHub Enterprise

Caso não consiga ver sua chave pública em GitHub Enterprise, seeá necessário adicionar a chave SSH a GitHub Enterprise para associá-la ao seu computador.

Aviso: se você encontrar uma chave SSH com a qual não esteja familiarizado em GitHub Enterprise, delete-a imediatamente e entre em contato com seu administrador do site do GitHub Enterprise para obter ajuda. Uma chave pública desconhecida pode indicar um possível problema de segurança. Para obter mais informações, consulte "Revisar as chaves SSH".

Pergunte a uma pessoa

Não consegue encontrar o que procura?

Entrar em contato