Git: Permissão negada (chave pública) fatal - Não foi possível ler no repositório remoto. ao clonar o repositório Git


153

Não consigo clonar um repositório Git e obtendo este erro:

krishna.soni@KRISHNACHANDRAS /c/Projects $ git clone http://stage.abc.com:10088/pqr
http://<url>/<repository> Cloning into '<repository>'... fatal: could not read Username for 'http://<url>': No such file or directory

Eu li Bitbucket, Windows e "fatal: não foi possível ler a senha para" , mas ainda tenho o problema.

Continuei, mas agora estou recebendo esse erro

sh.exe": chown: command not found

krishna.soni@KRISHNACHANDRAS /c
$ git clone ssh://krishna.sonipayu.in@stage.payupaisa.
/projects
Cloning into 'C:/projects'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

> krishna.soni@KRISHNACHANDRAS /c
>     $ git clone ssh:<url>
>     ts
>     Cloning into 'C:/projects'...
>     Permission denied (publickey).
>     fatal: Could not read from remote repository.

Please make sure you have the correct access rights

e o repositório existe.


Você tem certeza de que é um repositório git?
gravetii

Sim, ele é . Eu sou novo no git, recebendo esse erro durante a clonagem. Adicionei email e nome no arquivo de configuração global usando os comandos git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com
KCS

O principal motivo é que o repositório não pode reconhecê-lo como usuário do servidor git. Você pode acessar o servidor via ssh?
Малъ Скрылевъ

Se alguém tiver esse problema enquanto estiver usando o Github, siga as etapas mencionadas aqui: help.github.com/en/articles/… Funcionou para mim.
Rounak 6/03/19

Respostas:


69

Parece um problema de permissões - não um problema do Windows 7.

Sua chave ssh não está autorizada - Permission denied (publickey).

Você precisa criar uma chave pública ssh e pedir ao administrador do repositório Git para adicionar a sshchave pública

Informações sobre como fazer isso: Falha ao salvar a chave ssh


27
Isso é estranho. O repositório é público e estou clonando o repositório público. Não sei por que pedir permissão ao administrador para clonar seu repositório público hospedado no Github.
Shailen 30/07/2014

5
Sim, é falso, você não precisa perguntar nada ao administrador, é um problema com o git local.
Ivan Castellanos

3
Por que isso é difícil? Eu consegui, mas não foi indolor.
Niklas R.

9
Você não precisa autorizar uma chave para repos públicas, é só usar o protocolo HTTPS: stackoverflow.com/a/33072867/1385678
Diego V

225

Para as pessoas que vêm aqui que estão apenas tentando obter o repositório, mas não se importam com o protocolo (ssh / https), convém usar https em vez de ssh (se houver suporte).

Então, por exemplo, você usa

git clone https://github.com/%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

ao invés de

git clone git@github.com:%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

6
Este é o plano de fallback mais apropriado se as permissões ssh não forem resolvidas ou se você quiser pular essa parte.
Wahib Ul Haq

13
Esta resposta mudou o mecanismo de sshpara https. Não está resolvendo o problema original usando o ssh para acessar o repositório. Gostaria de saber como isso pode continuar sendo votado como uma boa resposta para a pergunta. As outras respostas abaixo estão resolvendo-o corretamente.
Armin

3
O problema original é um novato git tentando clonar um repo. Se o objetivo é retirar um repositório público, esta é a resposta mais rápida e eficaz.
Vivek Chavda

Obrigado por me salvar do suicídio. A propósito, isso pode ser usado para um repositório particular, desde que você tenha o nome de usuário e a senha.
Bill WAGNER

81

Se ainda houver problemas no acesso após a criação do SSH e a adição na sua conta Bitbucket ou em qualquer outro lugar, faça o seguinte no terminal no GitBash, OSX ou Linux:

# Lists already added identities (‘ssh keys’)
ssh-add -l

Em seguida, se você não vê sua chave listada, adicione-a com o seguinte (substitua identitypelo nome real):

# Add a new identity
ssh-add ~/.ssh/identity

Isso funcionou para mim.


3
ssh-add ~/.ssh/identityerro de retorno/Users/lee/.ssh/identity: No such file or directory
lee

14
Executar "ssh-add" em "~ / .ssh" (e digitar a senha do meu arquivo "~ / .ssh / id_rsa" quando solicitado) resolveu o problema para mim.
precisa saber é o seguinte

1
Consegui puxar meu repo, mas não empurre sem fazer isso, felicidades!
precisa

@ James Furey resposta me ajudou o sourcetree a identificar o URL ssh como um repositório Git.
YSR fan

2
trabalhou para mim ... depois de horas suando e tentando coisas diferentes. A única coisa é que, em vez de identidade, no final, use o nome em seu próprio sistema. Vá para a pasta .ssh executando o comando cd no terminal e digite o comando 'ls' no terminal. E então repita a "identidade" do comando acima com seu próprio arquivo. Ir para sourcetree terminal e: cd ~em seguida, cd .sshem seguida, lsem seguida, (copiar o nome sem pub extensão) então (executar este comando)ssh-add ~/.ssh/(copied name)
Tejas

21

Eu enfrentei o mesmo problema com o GitHub . Veja como resolvê-lo!

  1. Gere uma chave SSH no seu computador, conforme descrito aqui: Gerando chaves SSH .
  2. Faça login na sua conta do GitHub : Faça login no GitHub .
  3. Na sua conta, adicione a Chave SSH recém-gerada: Chaves SSH da minha conta .
  4. Tente novamente para git cloneo projeto.

Trabalhou como charme !!
Prakhar

1
Agora, usei essa resposta em três novos sistemas operacionais nos últimos 5 anos e sempre funcionou perfeitamente.
kotoole

Aparentemente, o High Sierra exige que o usuário registre a chave no arquivo .ssh / config. El Capitan de alguma maneira conseguiu sem ele.
dsomnus 18/06

14

Eu tive esse problema em um Mac - enquanto eu configuro o SSH corretamente para acessar meu repositório Git, após a reinicialização (e algum tempo o Mac estava em um impasse), todas as minhas credenciais foram removidas. Aparentemente, por algum motivo, a chave do pub foi definida como 644, o que fez com que ela fosse removida do chaveiro. Para ler:

  • chmod 600 a chave pública
  • ssh-add ~/.ssh/[your private key]- isso deve mostrar que a identidade foi adicionada. O arquivo de chave que você deseja é aquele sem a extensão .pub.
  • ssh-add -l deve mostrar a identidade recém-adicionada

edit: aparentemente o MacOS tem tendência a remover chaves - depois de baixar a atualização High Sierra (mas ainda não a instalei) minha chave foi removida e tive que adicioná-la novamente via ssh-add


2
Esta solução ainda é precisa após o upgrade do macOS High Sierra para a versão 10.13.1. Especificamente, o Sourcetree foi o aplicativo que apareceu no problema quando tentei enviar uma confirmação para um repositório remoto. As etapas acima corrigiram o problema para mim.
Paul Bonneville

Eu tive esse problema na versão 10.13.4 e esta solução funcionou para mim.
Andrew Ebling

11

Eu também enfrentei o mesmo problema. Fiz o seguinte e funcionou para mim:

  1. Gere chaves do cliente GIT GUI no Windows. Copie esta chave para a área de transferência.
  2. Abra sua conta no bitBucket/site git e adicione essa chave ao seu perfil. Dessa forma, o servidor sabe que você é um usuário legítimo acessando de um sistema legítimo.
  3. É isso aí. Todos os comandos push funcionaram para mim a partir de agora.

Isso me ajudou a ver que eu havia gerado meu RSA sem executar o Git Bash como administrador, que colocou minha chave RSA na unidade "h": oops:
tylerlindell

7

Para mim, quando eu queria clonar no meu repositório, a mesma mensagem foi notada antes de "Permissão negada (chave pública) fatal: não foi possível ler no repositório remoto". A solução para o meu caso é não usar o sudo antes do clone. É isso.


Muito obrigado @mustapha, você realmente economiza meu tempo.
vinay kumar 20/04

7

O Github (ou Bitbucket) não consegue encontrar sua chave ssh no servidor deles.

Basta adicionar sua chave na configuração da sua conta.


6

Se você gerar uma nova chave pública ssh e inseri-la no bitbucket ou no github e

não ajudou - tente reiniciar o seu PC . Isso me ajudou !!


Obrigado, era isso que eu precisava fazer também.
Steph

Eu tive que fechar o terminal e abrir um novo para vê-lo funcionando.
rahul

5

Você precisa criar uma nova chave ssh executando ssh-keygen -t rsa.


A referência de @Joel Heroku foi removida. Graças
Biniam

4

Eu recebi o erro ...

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

... quando eu estava tentando fazer contato de um prompt do Git Bash com o Bitbucket depois que meu laptop morreu de uma atualização ruim do Windows 10 e voltou às configurações de fábrica. Eu havia restaurado todos os meus arquivos ssh de um backup.

A causa do erro acabou sendo uma incompatibilidade no nome da minha conta do Windows após a reconstrução do computador. Aprendi que o arquivo de chave pública id_rsa.pubtermina com uma sequência de fácil leitura, compreendendo o nome da minha conta do Windows, seguida por um @sinal e o nome do computador.

Quando configurei meu computador originalmente, criei o nome da minha conta do Windows, incluindo a inicial do meio, mas quando o computador foi redefinido para as configurações de fábrica, nosso novo cara do DevOps criou o nome da minha conta sem a inicial do meio.

Para resolver o problema, simplesmente editei meu arquivo de chave pública id_rsa.pube removi a inicial do meio em meu nome no final. Eu tinha ficado com o mesmo nome de computador, então estava tudo bem. Copiei o conteúdo do arquivo para a área de transferência do Windows. Então, entrei no Bitbucket, fui para Configurações do Bitbucket no meu avatar e adicionei uma nova chave pública na qual colei o novo conteúdo.

De volta ao prompt do Git Bash, confirmei que agora funcionava inserindo o comando ...

ssh -T git@bitbucket.org

... e recebi uma mensagem informando que estava conectado.


4

No macOS / Linux (Ubuntu):

1. Para autenticar, você precisa adicionar sua parte pública do seu par de chaves SSH ao bitbucket nas configurações do usuário: Configurações do usuário -> Chaves SSH

Você encontrará a referida parte pública em seu diretório ~ / .ssh, normalmente id_rsa.pub. observe a .pubparte do nome do arquivo para Public. isso ajudará você a gerar um se você ainda não tiver um

Você ainda não terminou ...

2. Você precisa informar ao sistema qual chave usar com qual host remoto, portanto, adicione essas linhas ao seu arquivo ~ / .ssh / config

Host bitbucket.org
 IdentityFile ~/.ssh/PRIVATE_KEY_FILE_NAME

Onde PRIVATE_KEY_FILE_NAMEestá o nome da parte privada do seu par de chaves SSH, se você não mexeu com ele, geralmente o nome padrão é: id_rsa nesse caso, substitua PRIVATE_KEY_FILE_NAMEacima por id_rsa(a chave privada NÃO possui uma .pubextensão)


Nota, você grafada "Ubuntu" - edições deve ter pelo menos 6 caracteres, então não posso sugerir a edição :)
Misha Nasledov

4

Tópico útil e não trago muita novidade para a mesa. O passo que eu dei também faz parte da descrição que Maxime aponta prestativamente, mas alguns podem ignorar. A seção é Adicionando sua chave SSH ao ssh-agent .

Eu já havia gerado minha chave ssh, mas após uma reinicialização não consegui clonar um de meus próprios repositórios.

Eu tive que iniciar o ssh-agent e adicionar a chave privada a esse agente para clonar.

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

3

Eu enfrentei o mesmo problema ao executar o git clonecomando na linha de comando do Windows. Mas o comando é executado com sucesso no Git Bash .


3

Eu tive o problema semelhante. Alterei as teclas ssh e reiniciei e tentei todas as outras soluções 'n'. Mas o problema real para mim foi nosso protocolo padrão do gitlab alterado de ssh para https.

verifique o URL remoto com

git remote -v

alterar o URL remoto

git remote set-url origin https://URL

É perfeito, não precisamos configurar o ssh.
Rohit Parte

Eu tive que fazer o mesmo. A chave ssh não estava funcionando para mim neste caso
Dani

fatal: incapaz de acessar ' bitbucket.org:xxxxxx/xxxxxxxxtxt ': o número da porta terminou com 'r'
nosequeweaponer

2

Se tudo falhar, como foi o meu caso, desinstale o GIT, reinstale. Por algum motivo, isso corrige.

PS

  1. Tentei gerar novas chaves e atualizar em chaves públicas SSH
  2. Também tentou excluir todas as chaves e tentou criar uma nova chave.
  3. E NÃO, nada de errado com o meu .gitconfig

2

correção para a hubferramenta CLI:

  • git config --global hub.protocol https para longo prazo
  • git remote add OOPS https://github.com/isomorphisms/go.git&& git push OOPSpara correção imediata

Este erro ocorre com a hubferramenta de linha de comando devido ao hub.protocolvalor padrão incorreto do git-config. Eles definem repositórios para

git://github.com/schacon/ticgit.git

em vez do que o github realmente aceita, a saber https://github.com/schacon/ticgit.git.


A leitura LESS=+/"HTTPS instead" man hubexplicará de onde vem o comando "correção a longo prazo" acima.


Isso salvou meu dia!
Jay Lee

1

Durante a clonagem, tive um problema semelhante [meu ERRO: Permissão negada (chave pública). fatal: Não foi possível ler do repositório remoto. Por favor, verifique se você possui os direitos de acesso corretos .. etc]

- Eu estava usando o bitBucket / UBUNTU14.04 no meu caso, mas tinha um conjunto de arquivos-chave que eu havia gerado anteriormente E alterei o nome dos arquivos. Simplesmente copiei os arquivos no formato padrão de nome id_rsa e id_rsa.pub. Em seguida, executei novamente o comando sem problema.

OBTW : Eu também poderia ter usado o prompt de senha usando o clone do estilo HTTP.


0

Eu tive um problema semelhante no linux. Resolvi o problema efetuando login no servidor github e criando uma chave de implantação. Isso está nas configurações do repositório. Em seguida, copiei e colei minha chave pública (que geralmente está em ~ / .ssh / id_rsa.pub, mas sua configuração pode ser diferente). Há uma caixa de seleção para conceder a essa chave acesso de gravação. Clique nele (a menos que você esteja usando o git para implantar apenas; nesse caso, não clique nele).


0

Eu tive o mesmo erro. Minha solução foi sair e efetuar login novamente, pois meu ssh-agent ficou fora de sincronia com a chave ssh remota.

Adicionando isso aqui, caso alguém tenha visto que as outras respostas parecem não se aplicar à sua situação.


0

Eu estava enfrentando o mesmo problema ao configurar o ssh para o gitlab. Eu já tenho o ssh githube não pude substituir isso. Os passos que funcionaram para mim são:

  1. Gere SSH com o novo caminho e adicione-o à lista ssh ssh-add /path/to/new/id_rsa.
  2. Crie um arquivo chamado configno ~/.ssh/uso. Eu usei vi ~/.ssh/config/.
  3. Adicione isso ao arquivo recém-criado

# GitLab.com server Host gitlab.com RSAAuthentication yes IdentityFile /path/to/new/id_rsa

  1. Salve e saia.

Depois disso, reinicie o terminal e tente empurrar, ele deve funcionar


0

Se você deseja clonar projetos de código aberto para enviar uma solicitação de recebimento:

Queria clonar um projeto de código aberto para poder enviar algumas solicitações de recebimento. O problema era que eu não tinha permissões do proprietário do projeto. Não importa, já que minha intenção era enviar um PR, eis uma alternativa viável:

Minha solução:

  1. Repositório de Forquilhas

Repo Fork

  1. Em seguida, clone do seu repositório bifurcado. Clone do Repo bifurcado

  2. Trabalhe em seus recursos e envie uma solicitação de recebimento.



0

solução: no servidor que você está tentando clonar ou enviar a partir de cat ~ / .ssh / id_rsa.pub Vá para GitHub, configurações, chaves SSH e GPG , nova chave de colar chave SSH .


0

Vejo que esta mensagem de erro tem vários motivos diferentes. Eu tive o mesmo erro ao tentar configurar localmente outro repositório ao lado de um que já estava totalmente trabalhando com o ssh etc. e conectá-lo ao mesmo servidor, mas a outro repositório. Nenhuma resposta foi encontrada aqui, mas eu descobri. Então eu publico. Espero que ajude alguém.

git remote add origin git@git.ourserver.com:teamalpha/repositorytwo.git

0

se nenhuma dessas respostas ajudar e

  1. você está usando o Windows
  2. você gera sua chave com o Putty ou instalou o Putty no seu PC
  3. você gera sua chave com CMD ou PowerShell

Experimentar

  1. apague suas chaves
  2. pesquise nas janelas o Git Bash e gere uma nova chave com a linha de comando do Git Bash
  3. adicione chave pública ao seu repositório online

Em seguida, você encontrará depois do git clone e digitar yes para confirmar, ele deve começar a clonar


-2

Pode ser estúpido, mas aconteceu conosco:

Se você estiver usando bitbucket e Sourcetree e apenas copiar e colar o URL do clone na nova caixa de diálogo de repo, ele mostrará o mesmo erro ao puxar ou empurrar.

Certifique-se de excluir o material 'git clone' antes do URL.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.