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
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
-
Abra Terminal (Terminal)Terminal (Terminal)Git Basho terminal.
-
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)
If you have GitHub Desktop installed, you can use it to clone repositories and not deal with SSH keys. It also comes with the Git Bash tool, which is the preferred way of running git
commands on Windows.
-
If you are using Git Bash, turn on ssh-agent:
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566
If you are using another terminal prompt, such as Git for Windows, turn on ssh-agent:
# Iniciar o ssh-agent em segundo plano $ eval $(ssh-agent -s) > Agent pid 59566
-
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)
-
Abra Terminal (Terminal)Terminal (Terminal)Git Basho terminal.
-
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)
-
Abra Terminal (Terminal)Terminal (Terminal)Git Basho terminal.
-
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.
Dica: Na maioria dos sistemas, as chaves privadas padrão (~/.ssh/id_rsa
, ~/.ssh/id_dsa
e ~/.ssh/identity
) são automaticamente adicionadas ao agente de autenticação SSH. 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.
-
Abra o terminal.
-
Inicie o SSH agent em segundo plano.
$ eval "$(ssh-agent -s)" > Agent pid 59566
-
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)
-
In the upper-right corner of any page, click your profile photo, then click Settings.
-
In the user settings sidebar, click SSH and GPG keys.
-
Compare a lista de chaves SSH com a saída do comando
ssh-add
.
-
Abra a linha de comando.
-
Inicie o SSH agent em segundo plano.
$ ssh-agent -s > Agent pid 59566
-
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)
-
In the upper-right corner of any page, click your profile photo, then click Settings.
-
In the user settings sidebar, click SSH and GPG keys.
-
Compare a lista de chaves SSH com a saída do comando
ssh-add
.
-
Abra o terminal.
-
Inicie o SSH agent em segundo plano.
$ eval "$(ssh-agent -s)" > Agent pid 59566
-
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)
-
In the upper-right corner of any page, click your profile photo, then click Settings.
-
In the user settings sidebar, click SSH and GPG keys.
-
Compare a lista de chaves SSH com a saída do comando
ssh-add
.
-
Abra o terminal.
-
Inicie o SSH agent em segundo plano.
$ eval "$(ssh-agent -s)" > Agent pid 59566
-
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)
-
In the upper-right corner of any page, click your profile photo, then click Settings.
-
In the user settings sidebar, click SSH and GPG keys.
-
Compare a lista de chaves SSH com a saída do comando
ssh-add
.
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".