Mensagem de erro do GitHub – Permissão negada (publickey)

Alguém viu esse erro e sabe o que fazer?

Estou usando o terminal, estou na raiz, o repository do GitHub existe e não sei o que fazer agora.

> git push -u origin master Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

O GitHub não consegue autenticar você. Portanto, ou você não está configurado com uma chave SSH, porque não configurou nenhuma em sua máquina ou sua chave não está associada à sua conta do GitHub.

Você também pode usar o URL HTTPS em vez do URL SSH / git para evitar ter que lidar com chaves SSH. Este é o método recomendado pelo GitHub .

Além disso, o GitHub tem uma página de ajuda específica para essa mensagem de erro e explica com mais detalhes tudo o que você pode verificar.

Você precisa gerar uma chave SSH (se não tiver uma) e associá-la à sua conta do Github. Veja a documentação do próprio Github .

Você criou um arquivo de configuração em seu diretório ~ / .ssh? Deve ter conteúdos como estes:

 Host github.com IdentityFile ~/.ssh/github_rsa 

Supondo que você criou uma chave ssh chamada github_rsa

e carregou no GitHub …

NOTA: Você deve seguir este caminho de configuração explícita se tiver mais de uma chave (2 e mais) em seu diretório ~ / .ssh /. Se você não especificar a chave dessa forma, a primeira chave na ordem será usada para a autenticação do github, portanto, ela depende do nome do arquivo de chaves.

Isso aconteceu comigo. Por alguma razão, minha origem foi confusa sem que eu percebesse:

Verifique se suas configurações ainda estão corretas

 git remote -v 

o URL precisa ser algo como ssh: //git@github.com/YourDirectory/YourProject.git; se você não vê git@github.com, use

 git remote set-url origin git://github.com/YourDirectory/YourProject.git 

para acertar. Ou você pode usar o aplicativo github para verificar e definir o URL do Repositório Remoto Principal no painel de configurações de seu repository específico.

Eu conheço esse problema. Depois de adicionar a chave ssh, adicione-lhe a chave ssh ao agente ssh também (do documento oficial https://help.github.com/articles/generating-ssh-keys/ )

 ssh-agent -s ssh-add ~/.ssh/id_rsa 

Depois disso, tudo funciona bem, o git pode ver a chave correta, antes do coudn’t.

Primeiro, precisamos verificar as chaves ssh existentes no seu computador. Abra o Terminal e execute:

 ls -al ~/.ssh #or cd ~/.ssh ls 

e isso listará os arquivos em seu diretório .ssh

E, finalmente, dependendo do que você vê (no meu caso foi):

  github_rsa github_rsa.pub known_hosts 

Apenas tente configurar seu RSA e esperamos que isso resolva seus problemas de “origem do git push”

$ ssh-keygen -lf ~/.ssh/github_rsa.pub

OBSERVAÇÃO: Certificados RSA são pareados por chaves para que você tenha um certificado privado e público, o privado não estará acessível para você, pois pertence ao github (neste caso), mas o público é aquele que você pode estar faltando quando esse erro ocorrer (pelo menos esse foi o meu caso, minha conta github ou repo ficou confuso de alguma forma e eu tive que “ligar” a chave pública, gerada anteriormente)

Supondo que você esteja conectando o GitHub ao SSH, você pode executar o comando abaixo para confirmar isso.

 $git config --get remote.origin.url 

Se você obtiver um resultado com o seguinte formato git@github.com: xxx / xxx.github.com.git, então você deve fazer o seguinte.

Gere uma chave SSH (ou use uma existente). se você tiver um, basta adicionar sua chave ao agente ssh (etapa 2) e à sua conta do GitHub (etapa 3).

abaixo são para aqueles que não têm chave SSH.

Etapa 1 Gerando pares de chaves rsa pública / privada.

 $ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 

Será solicitado que você confirme onde salvar a chave SSH e qual frase secreta deseja usar.

Etapa 2 Adicione sua chave ao agente ssh

  • Assegure-se de que o agente ssh esteja ativado

    $eval "$(ssh-agent -s)"

  • Adicione sua chave SSH ao agente ssh:

    $ssh-add ~/.ssh/id_rsa

Etapa 3 Adicione sua chave SSH à sua conta

$sudo apt-get install xclip

$xclip -sel clip < ~/.ssh/id_rsa.pub

Em seguida, adicione a chave copiada ao GitHub

Vá para Configurações -> Chaves SSH (barra lateral configurações pessoais) -> Adicionar chave SSH -> preencher formulário (chave está na sua área de transferência, basta usar ctrl + v) -> Adicionar chave

Depois de passar pelas etapas acima, você deve resolver o problema de permissão.

Link de referência: Gerando chaves SSH .

Eu estava recebendo esse erro. Acontece que eu tinha acabado de atualizar o OSX para o Sierra e minha chave antiga não estava mais registrada.

No começo eu pensei que era “Atualizando para o macOS Sierra vai quebrar suas chaves SSH e trancá-lo fora de seus próprios servidores”

Mas eu tinha sidestepped aquele. Acontece que eu só tinha que registrar novamente minha chave existente:

ssh-add -K

E digite a senha … pronto!

Certifique-se de que ssh-add -l mostre uma impressão digital de uma chave SSH presente na lista de chaves SSH na sua conta do Github.

Se a saída estiver vazia, mas você souber que tem uma chave SSH privada que funciona com sua conta github, execute ssh-add nessa chave (encontrada em ~/.ssh . Ela é chamada id_rsa por padrão, então você provavelmente executará o ssh-add id_rsa ).

Senão, siga estas instruções para gerar um par de chaves SSH.

Caso você não esteja acessando seu próprio repository, ou clonando dentro de um repository clonado (usando alguns comandos “git submodule …”):

No diretório inicial do seu repository:

 $ ls -a 

1. Abra “.gitmodules”, e você encontrará algo parecido com isto:

 [submodule "XXX"] path = XXX url = git@github.com:YYY/XXX.git 

Altere a última linha para o HTTPS do repository que você precisa extrair:

 [submodule "XXX"] path = XXX https://github.com/YYY/XXX.git 

Salve “.gitmodules” e execute o comando para submódulos, e “.git” será atualizado.

2. Abra “.git”, vá para o arquivo “config”, e você encontrará algo parecido com isto:

 [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = https://github.com/YYY/XXX.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [submodule "XXX"] url = git@github.com:YYY/XXX.git 

Altere a última linha para o HTTPS do repository que você precisa extrair:

  url = https://github.com/YYY/XXX.git 

Então, neste caso, o principal problema é simplesmente com o URL. HTTPS de qualquer repository pode ser encontrado agora no topo da página do repository.

Eu estava usando o github anteriormente para um dos meus projetos php. Enquanto usava o github, eu estava usando o ssh em vez de https. Eu tinha minha máquina configurada assim e toda vez que eu usava para enviar e enviar o código, ele me perguntava minha senha de chave rsa.

Depois de alguns dias, parei de trabalhar no projeto php e esqueci minha senha rsa. Recentemente, comecei a trabalhar em um projeto java e mudei para o bitbucket. Desde então, eu tinha esquecido a senha e não há como recuperá-la, eu acho, eu decidi usar o protocolo https (recomendado) para o novo projeto e recebi o mesmo erro na pergunta.

Como eu resolvi isso?

  1. Executei este comando para dizer ao meu git para usar https em vez de ssh:

     git config --global url."https://".insteadOf git:// 
  2. Remova qualquer controle remoto, se houver

     git remote rm origin 
  3. Refazer tudo, desde git init para git push e funciona!

PS: Eu também desinstalei o ssh da minha máquina durante o processo de debugging, pensando que, removê-lo, o problema será resolvido. Sim eu conheço!! 🙂

Eu acho que tenho a melhor resposta para você, seus aplicativos git lêem seu id_rsa.pub no diretório do usuário root

 /home/root/.ssh/id_rsa.pub 

É por isso que sua chave em /home/your_username/.ssh/id_rsa.pub não pode ser lida por git. Então você precisa criar a chave em /home/root/.ssh/

 $ sudo su $ ssh-keygen $ cd ~/.ssh $ cat id_rsa.pub 

Em seguida, copie a chave na sua conta do github. Isso funcionou para mim. Você pode experimentá-lo.

Outra solução

crie as chaves SSH, digite ssh-keygen -t rsa -C "your_email@example.com" . Isto irá criar os arquivos id_rsa e id_rsa.pub.

Adicione o id_rsa à lista ssh no computador local: ssh-add ~/.ssh/id_rsa.

Depois de gerar as chaves, obtenha o pubkey usando:

 cat ~/.ssh/id_rsa.pub 

você terá algo como:

 cat ~/.ssh/id_rsa.pub ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1gD2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== user@email.com 

copie esta chave (valor) e vá para github.com e sob a configuração (chave ssh e pgp) adicione sua chave pública.

Eu gostaria de adicionar algumas das minhas descobertas:

Se você estiver usando o GitBash , certifique-se de que a chave SSH esteja armazenada em ~/.ssh/id_rsa .

Por padrão, o GitBash procura por ~/.ssh/id_rsa como caminho padrão para a chave SSH.

Até mesmo o nome do arquivo id_rsa importante. Se você salvar sua chave SSH em outro nome de arquivo ou caminho, ele lançará o erro Permission Denied(publickey) .

isso funcionou para mim:

1- remova todas as origens

 git remote rm origin 

(cf. https://www.kernel.org/pub/software/scm/git/docs/git-remote.html )

* remote: “Gerencia o conjunto de repositorys (” remotes “) cujos branches você rastreia.

* rm: “Remover o controle remoto nomeado. Todas as ramificações de controle remoto e configurações do controle remoto são removidas.”

2- verifique se tudo foi removido:

 git remote -v 

3- adicionar novo mestre de origem

 git remote add origin git@github.com:YOUR-GIT/YOUR-REPO.git 

isso é tudo, pessoal!

Eu tive o mesmo problema recentemente. Isso pode ajudar se você precisar de uma correção imediatamente, mas isso precisa ser feito toda vez que você reiniciar seu sistema

Do terminal, execute: ssh-add ~/.ssh/id_rsa

Digite sua senha do sistema e isso deve funcionar.

Se você já criou uma chave SSH e ainda está recebendo o erro, é porque precisa dar ao usuário permissions para ler e gravar na pasta em que está clonando. Para fazer isso, sudo chmod 777 " . Claro, isso é depois de ter gerado uma chave SSH e você ainda está recebendo este erro. Espero que isso ajude os futuros usuários.

Editar

Para adicionar a isso use admin no Windows se você estiver usando o bash git

Se você estiver usando a interface do usuário do GitHub for Mac, verifique as preferências para ter certeza de que está conectado.

Eu estava recebendo o mesmo erro durante o ‘git push’. No lado do cliente eu tinha dois origem e mestre. Eu removi um, então funcionou bem.

você pode usar o URL Https para fazer login

Eu acho que você está tentando fazer o login com ssh url quando você diz git push se ele pedir apenas senha considere que você está se conectando através de ssh.better você usa url http.

Também no Ubuntu, mesmo que já houvesse chave SSH inserida nas configurações do BitBucket, eu peguei esse problema. O motivo foi que eu estava tentando o seguinte:

 sudo git push origin master 

Não tenho certeza porque, mas foi resolvido usando

 git push origin master 

Nenhum sudo usado.

Uma vez que o cenário onde isso acontecerá é quando você segue as instruções do GitHub depois de criar seu repository. O Git irá instruí-lo para adicionar seu controle remoto com algo parecido com isto.

git remote add origin git@github.com:/.git

Substitua o que está em <> pelos valores relacionados à sua conta.

A solução é remover o sufixo .git . Adicione o controle remoto da seguinte maneira:

git remote add origin git@github.com:/

tl; dr

em ~/.ssh/config put

 PubkeyAcceptedKeyTypes=+ssh-dss 

Cenário Se você estiver usando uma versão do openSSH> 7, como em um touchpad do MacBook Pro, ele é ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0
ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0

Você também tinha um Mac antigo que originalmente tinha sua chave que você colocou no Github, é possível que esteja usando uma chave id_dsa. O OpenSSH v7 não coloca por padrão o uso dessas chaves DSA (que incluem este ssh-dss ), mas você ainda pode adicioná-lo de volta colocando o seguinte código em seu ~/.ssh/config

 PubkeyAcceptedKeyTypes=+ssh-dss 

A fonte que funcionou para mim é essa newsletter do Gentoo

Agora você pode pelo menos usar o GitHub e depois consertar suas chaves no RSA.

Talvez o seu agente ssh não esteja habilitado Você pode tentar

  1. Baixar git

http://git-scm.com/

  1. Instale-o

  2. Ativar ssh-agent

C: \ Arquivos de Programas \ Git \ cmd

start-ssh-agent

Para mim eu tentei isso –

 eval "$(ssh-agent -s)" 

então eu corro

 ssh-add ~/.ssh/path-to-the-keyfile 

e para gerar a chave você pode executar

 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 

isso irá gerar o par de chaves (público e privado).

você pode armazenar essa chave no github para ler mais isso Adicionar uma nova chave SSH à sua conta do GitHub

Espero que ajude os outros 🙂

Vá para o painel da sua conta do GitHub, encontre seu repository de projetos, clique na guia Configurações – sob as chaves de implantação, você terá que adicionar sua chave SSH. Abra o Terminal e digite:

 cat ~/.ssh/id_rsa.pub | pbcopy 

Isto irá copiar a chave do seu arquivo id_rsa.pub. Então, basta voltar ao painel do GitHub, colá-lo, clicar em Add Key e é isso.

A mesma solução se aplica às contas do Bitbucket.

Eu estava tendo um problema parecido com o @Batman. No entanto, como eu estava rodando em / usr / local / src / projectname, rodar sem sudo não era uma opção.

Basta adicionar o sinalizador -E para preservar o ambiente (seu caminho ~ / .ssh /).

$ sudo -E git clone git@your_repo

Do homem sudo:

-E, –preserve-env Indica à política de segurança que o usuário deseja preservar suas variables ​​de ambiente existentes. A política de segurança pode retornar um erro se o usuário não tiver permissão para preservar o ambiente.

Eu tinha 2 arquivos de identidade do Github carregados no agente ssh. Minha chave pessoal e outra para um projeto de cliente.

Eu removi a chave que estava causando confusão:

ssh-add -d id_rsa_github_somekey

Use o URL para esta página ao adicionar o GitHub como um controle remoto. ele não causará nenhum erro e empurrará o código

Usar o Https é bom, execute git config --global credential.helper wincred para criar um assistente de credenciais do Github que armazene suas credenciais para você. Se isso não funcionar, você precisará editar o arquivo de config no diretório .git e atualizar a origem para a URL https.

Veja este link para os documentos do github.