GitHub: permissão negada (chave pública). fatal: a extremidade remota desligou inesperadamente

197

Segui estas instruções abaixo para fazer upload de um projeto.

Configuração global:

 Download and install Git
  git config --global user.name "Your Name"
  git config --global user.email [email protected]
  Add your public key


Next steps:

  mkdir tirengarfio
  cd tirengarfio
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin [email protected]:tirenga/tirenga.git
  git push origin master

Mas eu recebo este erro:

Permissão negada (chave pública). fatal: a extremidade remota desligou inesperadamente

ziiweb
fonte

Respostas:

24

Para mim, o problema era a execução do clone via sudo.

Se você clonar em um diretório em que tenha permissão de usuário (/ home / user / git), ele funcionará bem.

(Explicação: A execução de um comando como superusuário não funcionará com a mesma chave pública que a execução de um comando como usuário. Portanto, o Github recusou a conexão.)

Esta solução requer que uma chave SSH já esteja configurada: https://help.github.com/articles/generating-ssh-keys

Smundo
fonte
1
esta solução parece muito próxima do que já foi publicado por learner_19
Erik
125

Eu tive que adicionar minha chave pública ao github. https://help.github.com/articles/generating-ssh-keys

ziiweb
fonte
3
No caso de você estar executando uma máquina linux, pode ser difícil copiar o conteúdo do arquivo id_rsa.pub se você estiver usando o emacs ou o nano. Tente copiar com um editor de texto (o Notepad, o TextEdit ou o gedit farão muito bem). Se você não possui nenhum desses itens, pode usar o vim.
Gokul NK
4
@GokulNK A outra alternativa é usar o xclip, como a página recomenda.
W4etwetewtwet 06/03
7
cat ~/.ssh/id_rsa.pubpode ser uma opção? : p
torr
você pode usar pbcopy < ~/.ssh/id_rsa.pubno OS X e colá-lo ( cmd+v) na página do github.
user3648895
28

depois de criar o par de chaves RSA, você deve adicioná-lo ao SSH usando:

ssh-add ~/.ssh/id_rsa

ou onde quer que você tenha criado seu par de chaves rsa.

Sergio Viera
fonte
Lifesaver! Você acerta o prego na cabeça. Obrigado
Tash Pemhiwa
Concordado, é importante verificar primeiro se o ssh-agent está em execução (a documentação do GitHub tem uma), e se a chave foi adicionada ao seu chaveiro. Porém, algo mais que vale a pena verificar, pois pode impedir que a chave seja usada, mesmo que esteja no chaveiro do ssh-agent, é o modo de acesso certo para a chave privada : ela deve ser 0600 ( chmod 600 ~/.ssh/id_rsabasicamente).
Chikamichi
18

Digite o seguinte comando usando seu nome de usuário e nome do repositório:

git clone https://github.com/{user name}/{repo name}

no Ubuntu isso funciona perfeitamente.

rahul_pratap
fonte
Eu acho que o protocolo https é necessário para ter uma conexão segura, é por isso que funciona. O Git @ github .. NÃO é seguro para a máquina.
Timo
16

Eu tenho uma solução depois de muito tempo em tutoriais.

Segui o tutorial do github neste link -> https://help.github.com/articles/error-permission-denied-publickey e consegui conectar-me em todas as etapas. Mas quando eu estava tentando git push -u origin master , recebi este erro:

Permissão negada (chave pública). fatal: Não foi possível ler do repositório remoto.

Verifique se você possui os direitos de acesso corretos

Foi assim que eu consertei !! Vá para o diretório do projeto usando o Terminal e confira

$git remote -v

Você obterá algo como isto:

origin  ssh://[email protected]/yourGithubUserName/yourRepo.git (fetch)
origin  ssh://[email protected]/yourGithubUserName/yourRepo.git (push)

Se você estiver usando algo diferente de [email protected] , abra o arquivo de configuração no diretório git digitando o comando:

vi .git/config

E configure a linha

[remote "origin"]

url = ssh://[email protected]/yourGithubUserName/yourRepo.git

fetch = +refs/heads/*:refs/remotes/origin/
rafaeljuzo
fonte
Para mim, ele realmente funcionou, substituindo [email protected] com <myusername> @ github.com
Eduard Feicho
O comando "git remote -v" não é o que eu tinha visto antes, e acabou sendo a chave para entender por que um dos meus repositórios estava funcionando, enquanto o outro estava retornando "Permissão negada (chave pública)" quando eu tentei rodar "git ls-remote". Muito útil. Obrigado.
Kevin
6

No meu caso, eu tive que configurar a chave pública para outro usuário, pois já tinha uma para o meu usuário principal. Depois que troquei de usuário e executei os comandos no link acima, pude executar a configuração do meu servidor de teste sem problemas.

Dan Power
fonte
Problema semelhante - Entrei como root (e ignorei isso) e não como o usuário real que foi configurado com o SSH. Não foi possível obter um commit para trabalhar para nada. Mudando de volta para corrigir o problema resolvido pelo usuário!
21412 Richard Hollis
1
Definida falta de explicação sobre como realmente executar a correção.
Richard
Eu não deveria ter que dizer isso, isso é para você Richard! Eu estava usando minha conta não raiz. Eu tive que executar o comando no URL de ajuda do github ( help.github.com/articles/generating-ssh-keys#platform-linux ) com o prefixo sudo.
Dan Power
5

Eu tive esse problema, mas nenhuma das soluções acima funcionou. Eu podia clonar e buscar, mas não conseguia empurrar. Eventualmente, eu descobri que o problema estava urlno meu .git/config, deveria ser:

[email protected]:<username>/<project>

(não ssh://github.com/<username>/<project>.gitou https://github.com/<username>/<project>.git).

eold
fonte
2
Para uma conexão SSH, a git@parte é a mágica. Então ssh://[email protected]/username/project.gittambém funciona.
bispo
.git é realmente importante. Esta solução funciona perfeita.
Onur Göker
5

Dado que nenhuma das respostas aqui funcionou para mim, finalmente localizei meu problema de conexão com o Bitbucket (ou o Github, não importa nesse caso) com ssh -vT [email protected].

No meu caso, a falha ocorreu devido ao uso de uma chave DSA em vez do RSA, e aparentemente meu cliente SSH não permite mais isso.

debug1: Ignorando a chave ssh-dss /c/Users/USER/.ssh/id_dsa por não estar em PubkeyAcceptedKeyTypes

A solução foi adicionar isso ao .ssh / config:

Host *
    PubkeyAcceptedKeyTypes +ssh-dss

Isso acrescenta elegantemente o tipo de chave ssh-dss a todos os tipos de chave pública aceitos existentes e, depois que isso foi feito, o git agora pode ssh no Bitbucket sem problemas.

Artem Russakovskii
fonte
Esta foi a solução para mim em uma máquina instável do Debian em dezembro de 2015. Eu a restringi ao "Host bitbucket.org", já que eu já tinha uma entrada para isso forçar minha seleção de identidade.
bitmusher
3

Meu problema foi que eu estava tentando atribuir à minha chave ssh um NOME ESPECÍFICO toda vez que inserissh-keygen no meu terminal mac.

Resolvi o problema deixando apenas o nome que "ssh-keygen" gera = id_rsa. Você terminará com duas chaves na pasta .ssh em um mac id_rsa, que é sua chave privada, e a id_rsa.pub, que é sua chave pública. Em seguida, copiei e salvei o código id_rsa.pubnas configurações da minha conta do GitHub, e foi isso. Problema resolvido.

paopao
fonte
O mesmo para mim. Deixar o nome vazio corrigiu o problema. Obrigado.
Berk
Cara, você fez o meu dia! 2 semanas com o console por causa de nomes de chave específicos! Obrigado!
eilas
Fico feliz que ajudou! @eilas
paopao 4/16
O motivo disso funciona é que, na maioria dos sistemas, as chaves privadas padrão ( ~/.ssh/id_rsa, ~/.ssh/id_dsae ~/.ssh/identity) são adicionadas automaticamente ao agente de autenticação SSH.
maffo 10/09
2

Adicionar chave pública é a solução.Para gerar chaves ssh: https://help.github.com/articles/generating-ssh-keys possui instruções passo a passo.

No entanto, o problema pode persistir se a chave não for gerada da maneira correta. Eu também achei esse link útil: https://help.github.com/articles/error-permission-denied-publickey

No meu caso, o problema era que eu estava gerando a chave ssh sem usar o sudo, mas ao usar os comandos git eu precisava usar o sudo. Este comentário no link acima "Se você gerar chaves SSH sem o sudo, quando tentar usar um comando como sudo git push, não usará a chave SSH gerada". me ajudou.

Portanto, a solução foi que eu tive que usar o sudo com os comandos de geração de chaves e os comandos git. Ou, para outros, quando eles não precisam do sudo em nenhum lugar, não o use em nenhuma das duas etapas. (comandos de geração de chaves e git).

learner_19
fonte
1

Eu enfrentei um problema semelhante ao executar o SSH ou o Git Clone no Windows. As descobertas a seguir ajudam a resolver meu problema:

  • Quando você executa “rhc setup” ou outros métodos ssh para gerar a chave ssh, ele cria o arquivo de chave privada id_rsa na pasta .ssh da sua pasta pessoal, o padrão é C: \ User \ UserID
  • O Git para Windows possui sua própria pasta .ssh em seu diretório de instalação. Quando você executa o git / ssh, ele procura o arquivo de chave privada id_rsa nesta pasta
  • Resolvido o problema, copiando id_rsa da pasta home .ssh para a pasta .ssh no diretório de instalação do git

Além disso, acho que existe uma maneira de "dizer" ao git para usar a pasta .ssh padrão na pasta inicial, mas ainda preciso descobrir como.

gkl
fonte
1

Para mim, funcionou assim:

No GitHub, alterei o sshlink para httpse, em seguida, dei os seguintes comandos:

$ git init
$ git remote add origin https:...
$ git add .
$ git commit -m "first commit"
$ git push origin master
Naiguel Developer
fonte
0

Use o ubuntu na windows store

subsistema windows para linux

, seu git push funcionará em diferentes contas.

MayurKubavat
fonte
0

Se você estiver usando uma máquina Linux, verifique,

  • você tem o Openssh instalado
  • se o fizer, você possui uma chave pública existente; caso contrário, terá que gerar uma.
  • é sua chave pública adicionada à sua conta do github.

Gerar novas chaves SSH e adicioná-las à minha conta do Github resolveu meu problema. Você pode consultar esta página para obter mais detalhes. GitHelp .

Sparsh Juneja
fonte
0

Você pode tentar alterar sua conexão de tipo para ramificar de ssh para https.

  1. nano project_path/.git/config
  2. Substitua [email protected]:username/repository.gitparahttps://[email protected]/username/repository_name.git
  3. Salvar arquivo ctrl+o

Depois disso, você pode tentar git pullsem chave pública

Maxim Niko
fonte
-1

Uma maneira rápida de corrigir isso se você estiver usando um Mac é sair do aplicativo OSX e fazer login novamente.

brandonscript
fonte
-1

Meu problema era que ele não funcionava com uma senha na minha chave privada.

Espero que ajude alguém.

Dormouse
fonte
-3

Eu tentei as soluções mencionadas, mas ainda falhei. Encontrei a solução que finalmente funcionou para mim aqui - removendo e adicionando novamente o link remoto

yjsa
fonte
-4

Eu tive o mesmo problema no Windows. Mudei de SSH para HTTPS e executei um Git PUSH.

git push -u origin master
Username for 'https://github.com': <Github login email>
Password for <Github login>: xxx

Bem sucedido! espero que isto ajude.

erukumk
fonte
Embora isso possa ser uma solução alternativa, ele não resolve o problema inicial.
maffo 10/09