Git-Permissão negada (publickey)

Estou no Mac Snow Leopard e acabei de instalar.

acabei de tentar

git clone [email protected]:cakebook.git

mas isso dá-me este erro:

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
O que me está a escapar?
Eu também tentei fazer ssh-keygen sem senha, mas ainda assim o mesmo erro.

Author: Patrick Mevzek, 2010-04-15

30 answers

Esta informação está a trabalhar no theChaw, mas pode ser aplicada a todos os outros repositórios git que suportam as autenticações da 'pubkey' do SSH. (Ver gitolite , gitlab ou github, por exemplo.)

Primeiro comece por configurar o seu próprio par de chaves público/privado. Presente pode usar DSA ou RSA, então basicamente qualquer chave que você configurar vai funcionar. Na maioria dos sistemas você pode usar o ssh-keygen.

  • primeiro você vai querer cd em seu .directório ssh. Abrir o terminal e correr:

    cd ~/.ssh && ssh-keygen

  • A seguir, tem de copiar isto para a sua área de transferência.
    • em execução de OS X: cat id_rsa.pub | pbcopy
    • em execução no Linux: cat id_rsa.pub | xclip
    • no Windows (via Cygwin/Git Bash) executar: cat id_rsa.pub | clip
  • adicione a sua chave à sua conta através do site.
  • Finalmente, prepara o teu .gitconfig.
    • git config --global user.name "bob"
    • git config --global user.email bob@... (não se esqueça de reiniciar a sua linha de comandos para se certificar que a configuração é recarregada)
É isso que deves fazer bem em Clonar e fazer o check-out.

Mais informações podem ser encontradas em https://help.github.com/articles/generating-ssh-keys (graças a @Lee Whitney)

 547
Author: Rufinus, 2015-12-16 00:32:52

A solução de problemas mais extensa e mesmo a fixação automática podem ser feitas com:

ssh -vT [email protected]

Fonte: https://help.github.com/articles/error-permission-denied-publickey/

 158
Author: nottinhill, 2018-05-12 13:16:24

Este erro pode acontecer quando você está acessando o URL SSH (Ler / Escrever) em vez do URL Apenas para leitura Git, mas você não tem acesso de escrita a esse repo.

Às vezes você só quer clonar o seu próprio repo, por exemplo, implantar para um servidor. Neste caso, você só precisa de acesso apenas para leitura. Mas como isso é o seu próprio repo, o GitHub pode mostrar o URL de SSH se for essa a sua preferência. Nesta situação, se a chave pública do seu host remoto não estiver nas suas chaves SSH do GitHub, o seu acesso será negado, o que se espera que aconteça.

Um caso equivalente é quando você tenta clonar o repo de outra pessoa para o qual você não tem acesso de Escrita com URL SSH.

Numa palavra, se a sua intenção é clonar apenas um repo, use o URL HTTPS (https://github.com/{user_name}/{project_name}.git) em vez do URL SSH ([email protected]:{user_name}/{project_name}.git), o que evita a validação (desnecessária) da chave pública.


Actualização: o GitHub está a mostrar os HTTPS como o protocolo por omissão e esta jogada poderá provavelmente reduzir o possível uso indevido de URLs SSH.

 126
Author: kavinyao, 2014-10-16 08:29:02

A ajuda do github link ajudou-me a resolver este problema. Parece que a chave ssh não foi adicionada ao agente ssh. Foi isto que acabei por fazer.

comando 1:

Assegurar que o agente ssh está activo. O comando inicia o agente ssh em segundo plano:

eval "$(ssh-agent -s)"

comando 2:

Adicione a sua chave SSH ao agente ssh:

ssh-add ~/.ssh/id_rsa
 78
Author: jarora, 2016-10-29 07:14:15

Note que (pelo menos para alguns projectos) deve ter uma conta github com uma chave SSH.

Veja as chaves listadas no seu agente de autenticação (ssh-add-l)
(se não vir nenhuma, adicione uma das suas chaves existentes com o SSH-add /path / to/your /key (eg: ssh-add~/.ssh / ID_ RSA))
(se você não tem nenhuma chave, primeiro crie uma. Ver: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html ou Apenas google ssh-keygen)

Para verificar se tem uma chave associada à sua conta github:

Vá para: https://github.com/settings/ssh

Você deve ver pelo menos uma chave com uma chave de hash correspondente a uma das hashs que você viu quando escreveu SSH-add-l apenas um minuto atrás.

Se não o fizer, adicione um e tente de novo.
 17
Author: Mason Bryant, 2013-01-17 20:13:19
Isto funciona comigo.
ssh-add ~/.ssh/id_rsa
 13
Author: Wouter Schoofs, 2017-01-07 12:17:57

Tive uma situação ligeiramente diferente, estava ligado a um servidor remoto e estava a usar o git no servidor, quando executei qualquer comando git recebi a mesma mensagem

   Permission denied (publickey).
   fatal: The remote end hung up unexpectedly

A forma como o corrigi foi alterando o ficheiro /etc/ssh_ config no meu Mac. de

ForwardAgent no 

A

ForwardAgent yes
 12
Author: Richipal, 2013-12-17 00:43:12

Tenho o mesmo relatório de erro.

Corrigido com a utilização de HTTP em alternativa. Já que não quero definir "chaves SSH" para um PC de teste.

Mudar o URL para HTTP ao clonar:

git clone https://github.com/USERNAME/REPOSITORY.git

O meu problema é um pouco diferente: tenho um conjunto de URL ao adicionar um repo local existente ao remoto, usando:

git remote add origin ssh://github.com/USERNAME/REPOSITORY.git

Para o corrigir, repõe o URL em HTTP:

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

BTW, pode verificar o seu URL usando o comando:

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)
Espero que isto ajude alguém como eu. : D
 12
Author: Robina Li, 2018-01-03 23:58:08

Encontrei o mesmo problema porque pensava-se que a diferença entre SSH e HTTPS é

https://github.com/USERNAME/REPOSITORY.git

ssh://github.com/USERNAME/REPOSITORY.git

Então eu mudei de HTTPS para SSH apenas mudando https:// para ssh:// nada no fim do url foi alterado.

Mas a verdade é:
https://github.com/USERNAME/REPOSITORY.git

[email protected]:USERNAME/REPOSITORY.git

O que significa que mudei ssh://github.com/USERNAME/REPOSITORY.git para [email protected]:USERNAME/REPOSITORY.git funciona.

Erro estúpido, mas a esperança ajuda alguém!
 9
Author: William Hu, 2018-09-03 19:11:27
Estava a debater-me com o mesmo problema que fiz e consegui clonar o repo. Segui este procedimento para iMac .

Primeiro Passo: Verificar se já temos a chave SSH pública.

    Abrir Terminal.
  1. indique ls -al ~/.ssh para ver se as chaves SSH existentes estão presentes:

Verifique a lista de directórios para ver se já tem uma chave SSH pública.O público padrão é um dos seguintes d_dsa.pub, id_ecdsa.pub, id_ed25519.pub, id_rsa.pub

Se não encontrar então vá para o PASSO 2 caso contrário siga o Passo 3

Passo 2: Gerar a chave pública de SSH

    Abrir Terminal.
  1. indique o comando followong consigo um endereço de E-mail válido que utiliza para o github ssh-keygen -t rsa -b 4096 -C "[email protected]"
  2. ver a seguir no terminal Generating public/private rsa key pair. Quando pedir para"Enter a file in which to save the key," carregar em Enter. Isto aceita a localização predefinida do ficheiro. Quando ele pedir para Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] basta carregar em enter novamente. Em a linha de comandos, escreva uma frase-senha segura.
  3. Enter passphrase (empty for no passphrase): [Type a passphrase] carregue em enter se não quiser Enter same passphrase again: [Type passphrase again] carregue em enter novamente
Isto irá gerar id_rsa.pub

Passo 3: Adicionar a sua chave de SSH ao agente de ssh

  1. Tipo Interminal eval "$(ssh-agent -s)"
  2. Adicione a sua chave SSH ao agente ssh. Se estiver a utilizar um SSH existente em vez de gerar uma nova chave SSH, terá de substituir ID_ RSA no comando com o nome da sua chave privada existente arquivo. Indique isto comando $ ssh-add -K ~/.ssh/id_rsa

Agora copia a chave SSH e adiciona-a também à tua conta GitHub

  1. no terminal indique este comando com o seu nome de ficheiro ssh pbcopy < ~/.ssh/id_rsa.pub Isto irá copiar o ficheiro para a sua área de transferência Agora abra a sua conta do github vá para configuração > teclas SSH e GPG > nova tecla ssh indique o Título e cole a chave da área de transferência e grave-a. Pronto, já acabaste.
 7
Author: Zeeshan Shabbir, 2017-05-24 05:17:52

No Windows, certifique-se que todos os seus aplicativos concordam em casa. A Msys não o fará por ti. Tive de definir uma variável de ambiente porque o ssh e o git não conseguiram chegar a acordo .era o directório do ssh.

 6
Author: Jason, 2012-11-07 20:58:26

As instruções básicas do GIT não faziam uma referência à chave do SSH. Seguindo alguns dos links acima, eu encontrei uma página de Ajuda git que explica, passo a passo, exatamente como fazer isso para vários sistemas operacionais (o link irá detectar o seu SO e redirecionar, de acordo com isso):

Http://help.github.com/set-up-git-redirect/

Ele percorre tudo o que é necessário para o GITHub e também dá explicações detalhadas como " por que adicionar uma frase-senha ao criar um RSA chave."Pensei em publicá-lo, caso ajude outra pessoa...

 5
Author: gMale, 2012-05-02 19:36:29
Estás num ambiente empresarial? É possível que as variáveis do seu sistema tenham mudado recentemente? Per this SO answer, ssh keys live at {[[0]}. Então se %HOMEDRIVE% mudou recentemente, o git não sabe onde procurar a sua chave, e assim todas as coisas de autenticação. Tenta correr. Tome nota da localização do identity file. Para mim, isso estava apontando não para o meu normal {[[4]} mas sim para uma unidade de rede, por causa de uma mudança para variáveis de ambiente empurradas ao nível da rede. A solução? Uma vez que o meu novo %HOMEDRIVE% tem as mesmas permissões que os meus ficheiros locais, acabei de mudar o meu .a pasta ssh ali, e acabou-se.
 4
Author: Andrew, 2014-05-30 17:43:38

Uma das maneiras mais fáceis

Vá para o terminal -

  git push <Git Remote path> --all
 4
Author: Vizllx, 2016-04-20 06:17:39
Pessoal, foi assim que funcionou comigo.

1-abrir o terminal e ir para o utilizador [Ver imagem em anexo]

2 aberto .SSH pasta e certifique-se de que não tem nenhum arquivo como ID_ RSA ou id_rsa.pub caso contrário, às vezes não irá reescrever adequadamente os ficheiros

3-git -- version [verificar a instalação e a versão do git]

4-git config -- global user.e-mail"your email id"

5 - git config -- global user.name "o teu nome"

6-git config -- list [certifique-se que tem definir o seu nome e E-mail]

7-cd ~/.ssh

8-ssh-keygen, pede para gravar o ficheiro, permite-o

9 - gato ~/.ssh / ID_ RSA.pub [acesse a sua chave pública e copie a chave para a configuração do gerrit]

Nota : não deve usar o comando sudo com o Git. Se você tem uma razão muito boa que você deve usar sudo, em seguida, certifique-se de que você está usando com cada comando (provavelmente é apenas melhor usar su para obter uma shell como raiz nesse ponto). Se gerar teclas SSH sem o sudo e então tente usar um comando como o sudo git push, você não estará usando as mesmas chaves que você gerou

enter image description here

enter image description here

 4
Author: vikram jeet singh, 2016-05-18 03:47:46

Para além da resposta do Rufinus, o atalho para copiar a sua tecla ssh para a área de transferência em Windows é:

  • type id_rsa.pub | clip

Refs:

 3
Author: Jonathan, 2017-05-23 12:10:47
[[1]eu acabei de experimentar este problema ao definir o meu projeto atual, e nenhuma das soluções acima funciona. então eu tentei ver o que realmente está acontecendo na lista de depuração usando o comando ssh-vT [email protected]. reparei que o meu nome de código privado não está na lista. então, mudar o nome do ficheiro da chave privada para 'ID_ RSA' faça o trabalho. espero que isto possa ajudar.
 2
Author: Rhey M., 2015-12-13 09:21:10

Se tiver mais do que uma chave poderá ter de fazer ssh-add private-keyfile

 2
Author: kashif, 2016-07-03 00:08:32
É muito em frente. Escreva o comando abaixo
ssh-keygen -t rsa -b 4096 -C "[email protected]"

Gera a chave SSH. Abra o arquivo e copie o conteúdo. Vá para a página de configuração do GitHub, e clique na tecla SSH . Carregue em Adicionar uma nova tecla SSH e cole aqui o conteúdo. É isso:) você não deve ver o problema novamente.

 2
Author: karthik339, 2016-08-23 05:42:34

Eu estava a obter um erro similar de permissão negada (publickey) ao tentar executar um makefile.

Como uma alternativa aos passos SSH acima, você pode instalar o GitHub nativo para a aplicação Mac.

Carregue em transferir o GitHub para o Mac a partir de - https://help.github.com/articles/set-up-git#platform-mac

Assim que terminar a configuração com a sua conta de hub do git (também instalei as ferramentas da linha de comandos do Git, mas não sabe se este passo é necessário ou então recebi um email -

[GitHub] uma nova chave pública foi adicionada à sua conta

E o meu erro foi corrigido.
 1
Author: WickedW, 2013-06-13 17:01:22
Estava a ter o mesmo erro. O meu problema era misturar-me no sudo.

Não consegui criar a pasta em que estava a clonar automaticamente sem pré-configurar o comando de clones do git com o sudo. Quando fiz isso, no entanto, as minhas chaves ssh onde não estão a ser devidamente referenciadas.

Para corrigi-lo, defini permissões via chmod na pasta-mãe que queria conter o meu clone para poder escrever para ele. Depois fiz o git clone sem um prefixo sudo. Então funcionou! Alterei as permissões voltamos depois disso. Terminar.

 1
Author: BuvinJ, 2015-07-29 19:24:35

Estava a receber este erro porque gerei as teclas ssh com o e-mail errado. Fui capaz de me conectar usando ssh, mas não usando git. A solução era regenerar as chaves usando o endereço de E-mail principal da minha conta github.

 1
Author: Charles Brunet, 2015-12-15 18:59:56
Funcionou comigo. A sua chave pública é guardada no id_rsa.pub; ficheiro e é a chave que envia para a sua conta. Poderá gravar esta chave na área de transferência se executar isto:

Pbcopy

  • copie a chave SSH para a área de transferência, retorne ao portal web.
  • no campo chave SSH, cole a sua chave SSH.
  • no campo Nome, indique o nome da chave.
  • Salve .
 1
Author: Harshikesh Kumar, 2016-02-14 05:12:28
Funcionou comigo.
ssh -i [your id_rsa path] -T [email protected]
 1
Author: Mr陈哲, 2016-04-06 07:26:21

A solução mais fácil para isto, quando você está tentando empurrar para um repositório com um nome de usuário diferente é:

 git remote set-url origin https://[email protected]/USERNAME/PROJECTNAME.git
 1
Author: Nizar B., 2016-11-20 21:28:05

Este estranho erro, no meu caso, foi um sintoma de {[[0]} incorrectamente nomear a chave para a qual era necessária uma senha.

Sigo os passos descritos aqui, e introduzo a senha através do terminal. O erro, conhecido como a interface GUI confusa, foi resolvido. Ver: https://askubuntu.com/questions/3045/how-to-disable-gnome-keyring

 1
Author: rivanov, 2017-06-26 04:50:35

No meu caso, reinstalei o ubuntu e o nome de utilizador foi alterado em relação ao anterior. Neste caso, a chave de ssh gerada também difere da anterior.

O problema resolvido apenas copiando a chave pública ssh atual, no repositório. A chave estará disponível no site do seu utilizador/home/.ssh/id_rsa.pub

 1
Author: Sonu, 2017-07-06 07:19:08
No meu MAC resolvi isto com:
cp ~/.ssh/github_rsa ~/.ssh/id_rsa
Por alguma razão, o meu git parou para encontrar a chave privada no ficheiro github_rsa. Isto aconteceu num acordo de recompra específico. Quero dizer que noutros repositórios o git continuava a trabalhar normalmente. Acho que é um insecto. Acho que este comportamento está a correr.ssh -vT [email protected]
 1
Author: CelinHC, 2017-07-27 12:59:54

Use a ligação ssh do Github mas certifique-se de não a adicionar com ssh apenas use o que a página ssh do Git hub lhe dá para clonar o seu repo.

 0
Author: pal4life, 2012-09-05 17:53:30

Consegui ultrapassar este problema seguindo os passos abaixo no meu sistema ubuntu. Enquanto eu estava experimentando com passwordless ssh para o sistema.

Sudo vi /etc / ssh / sshd_ config

1) Commented below : # Muda para o no para desactivar senhas de texto limpadas por túnel PasswordAuthentication sim PasswordAuthentication no - - - - > comentou isto.

2) em seguida, reiniciou o servidor de sshd como abaixo.

Service sshd restart

 0
Author: lambzee, 2017-04-03 09:31:24