Heroku 'permissão negada (chave pública) fatal: não foi possível ler a partir do repositório remoto'

139

Pesquisei por muitas horas seguidas procurando uma solução para o meu problema aparentemente fácil de corrigir. Não é que minha pesquisa tenha revelado nada, é que minha pesquisa tenha apresentado tantas soluções diferentes - nenhuma das quais funcionou.

De qualquer forma, sou simplesmente incapaz de empurrar, puxar ou buscar do meu repositório Heroku do meu Mac. Toda tentativa me dá (como se estivesse zombando de mim) o seguinte erro:

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

Eu tentei (e tentei novamente) corrigi-lo de várias maneiras diferentes. Como já disse, passei boa parte dos últimos dois dias procurando uma resposta. Aqui estão algumas das coisas que eu tentei:

  • chaves heroku: limpe seguido de chaves heroku: adicione
  • Regenerando uma chave ssh sozinha com 'ssh-keygen -t rsa'
  • Limpando meu diretório .ssh, seguido pelas chaves heroku: clear, seguido pela geração de uma chave ssh
  • Excluir meu aplicativo no heroku e recriar um (felizmente não havia muito lá)

Posso buscar do meu repositório GitHub corretamente, então eu sei que não é conectividade de rede (executar ping heroku também funciona).

Como uma solução improvisada (que, espero, não se torne permanente), entrei na minha instância do Ubuntu Amazon AWS ec2. Puxar e empurrar de e para Heroku funciona perfeitamente. Por esse motivo, ainda sinto que o problema está na tecla ssh no meu Mac. Ambas as teclas aparecem na minha conta Heroku. O endereço de email no final da chave é importante?

Edição: Eu posso empurrar e puxar do GitHub bem (eu não estou usando ssh, no entanto), então por que não Heroku?

Neste ponto, estou disposto a tentar qualquer coisa. Obrigado!

thebradbain
fonte
Você definiu uma senha para sua chave heroku? E suponho que isso ( stackoverflow.com/a/16753800/6309 ) não ajude? Ou verifique
novamente
Infelizmente ainda se recusa a trabalhar.
thebradbain
às vezes isso acontece quando o heroku está em manutenção: status.heroku.com
Mavis

Respostas:

284

Eu sei que isso já foi respondido. Mas gostaria de adicionar minha solução, pois pode ser útil para outras pessoas no futuro.

Um erro de chave comum é: Permission denied (publickey). Você pode corrigir isso usando keys:addpara notificar o Heroku sobre sua nova chave.

Em resumo, siga estas etapas: https://devcenter.heroku.com/articles/keys

Primeiro você precisa criar uma chave se não tiver uma:

ssh-keygen -t rsa

Segundo, você precisa adicionar a chave ao Heroku:

heroku keys:add
Kris Hollenbeck
fonte
2
Kris, obrigado, alguém do futuro :) Isso funciona para mim
Ahmad Ajmi
8
chaves heroku: add foi meu tutorial perdido, eu acho ... obrigado! :)
Ole Henrik Skogstrøm
A chave só tem que ser gerado se você não tiver um alredy, no meu caso eu alredy tinha a chave e só precisava para adicionar a chave para heroku
joseramonc
4
O primeiro é desnecessário. heroku keys:addajudará você a criar uma se você não tiver uma chave.
Mygod 14/03
Executar ssh-keygen -t rsa, se o RSAnão é gerada de outra forma heroku keys:adddeve ser suficientes
Volatil3
122

Eu apenas pensei em compartilhar que encontrei a resposta para minha própria pergunta.

Escrever o meu problema tornou-o ainda mais claro, e eu investiguei ainda mais onde eu achava que estava o meu problema: a chave ssh

Acontece que eu estava certa. O problema não era com a chave em si, mas com o fato de eu não a ter adicionado à lista de chaves ssh conhecidas do meu Mac local. Portanto, mesmo que minha conta Heroku tenha a chave correta carregada, meu Mac não pôde se autenticar com ela porque não encontrou essa chave no meu computador. A solução?

ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l

Gostaria de dar crédito a https://help.github.com/articles/error-permission-denied-publickey por ser uma boa referência.

thebradbain
fonte
5
Obrigado pelo seu feedback, mais preciso da sua situação do que o meu comentário inicial. +1
VonC 13/07/2013
4
No Windows, será necessário iniciar Git Bash(clique com o botão direito do mouse em uma pasta) e iniciar um ssh-agentque seja possível executando `ssh-agent`(lembre-se dos back-ticks) e, em seguida, adicione a chave conforme descrito acima. Eu tenho que fazer isso toda vez que inicio o Git Bash/ ssh-agent, esquece o que foi adicionado.
TWiStErRob
Eu fiz isso e ainda não funcionou. Acabei por ter de adicionar uma variável de ambiente chamada Home conjunto para o diretório minha pasta .ssh estava em
Justin
Obrigado - nunca teria descoberto isso!
Mark Hansen
Este fixa o meu problema, não a maior votou resposta, graças :)
Ryan Brodie
31

Eu tive exatamente o mesmo erro (no Windows 7) e a causa foi diferente. Eu o resolvi de uma maneira diferente, então pensei em adicionar a causa e a solução aqui para outras pessoas.

Mesmo que o erro parecesse apontar para heroku, na verdade, o erro estava dizendo "Heroku can't get to the git repository". Eu jurei que tinha as mesmas chaves em todos os servidores porque criei e enviei para um após o outro ao mesmo tempo.

Depois de passar quase um dia nisso, percebi que, porque o git estava apenas me mostrando a impressão digital e não a chave real. Não pude verificar se a chave corresponde à do meu HD ou heroku. Procurei no arquivo hosts conhecido e adivinhem ... ele mostra as chaves de cada servidor e pude ver claramente que as chaves públicas git e heroku não eram correspondentes.

1) Excluí todos os arquivos da minha pasta de chaves, a chave do github usando o site deles e a chave do heroku usando o git bash e o comando heroku keys:clear

2) Siga as instruções do github aqui para gerar um novo par de chaves e fazer upload da chave pública para o git

3) usando git bash- heroku keys:add para carregar a mesma chave no heroku.

Agora git push heroku masterfunciona.

que pesadelo, espero que isso ajude alguém.

Bryan

Bryan Myers
fonte
1
Coloquei meu cérebro nisso até eu ver seu post. Assim que eu fiz as teclas git e heroku iguais, tudo estava bem. Mas não entenda por que eles precisam ser os mesmos.
Kishore Masand
Obrigado pela resposta passado as idades com este problema
Ivan Bacher
muito útil link da documentação git, tudo funciona perfeito
HotJard
Isso funcionou para mim depois de alguns dias tentando descobrir. Estou surpreso que Heroku possa permanecer no negócio com um problema de usabilidade tão desagradável. Deve haver uma maneira mais fácil de fazer isso.
Lucas F.
Obrigado. Trabalhou para mim; apenas uma coisa: no link do github em algum lugar diz para fazer "ssh-add". Lá eu tive um problema, mas encontrei a solução aqui: stackoverflow.com/questions/17846529/…
Alin Ciocan
17

O problema que eu estava tendo é que eu estava usando apenas https na minha conta do GitHub. Eu precisava ter certeza de que minha conta do GitHub estava configurada para acesso ssh e que o GitHub e o heroku usavam as mesmas chaves públicas. Estes são os passos que tomei:

  1. Navegue para o diretório ~ / .ssh e exclua o id_rsa e o id_rsa.pub, se houver. Comecei com novas chaves, embora possa não ser necessário.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Siga as etapas no gitHub para gerar chaves ssh
  3. Entre no heroku, crie um novo site e adicione suas chaves públicas:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    
sjking
fonte
6

Eu tive o mesmo caso no linux ubuntu e apenas o corrigi, parece que o sistema operacional estava confuso entre o /root/.ssh/ e home / user / .ssh / dir, o que fiz foi:

  1. removeu todas as chaves do diretório raiz e home / user .shh.
  2. gerou uma nova chave, preste atenção ao caminho da criação (/home/you/.ssh/id_rsa) ou (/root/.ssh/id_rsa)
  3. verifique as chaves heroku heroku keys
  4. se as chaves lá claras heroku keys:clear
  5. heroku keys:addagora, aqui, se o heroku não conseguiu encontrar uma chave e pediu para gerar uma não, e isso significa que você tem o mesmo problema que o meu, faça o comando add assim: heroku keys:add /root/.ssh/id_rsa.pubo caminho que você adicionará será o que você obteve na etapa 2.
  6. tente git push heroku masteragora
oqx
fonte
3

Meu caminho no Windows 8

  1. Adicione um diretório com ssh-keygen à variável PATH do sistema, geralmente C: \ Arquivos de Programas (x86) \ Git \ bin

  2. Abra o CMD, vá para C: \ Users \ Me \

  3. Gerar chave SSH ssh-keygen -t rsa

    Digite o arquivo no qual salvar a chave (//.ssh/id_rsa): .ssh / id_rsa (altere um caminho incorreto padrão para .ssh / somegoodname_rsa)

  4. Adicione a chave ao Heroku heroku keys:add

    Selecione uma chave criada em uma lista

  5. Vá para o diretório do seu aplicativo, escreva um código bonito

  6. Iniciar um repositório git git init git add . git commit -m 'chore(release): v0.0.1

  7. Criar aplicativo Heroku heroku create

  8. Implante seu aplicativo git push heroku master

  9. Abra seu aplicativo heroku open

Ivan Rave
fonte
2

Teve um problema semelhante e tentei muitas coisas. Por fim, o que funcionou para mim foi instalar o Gnu no Windows ( https://github.com/bmatzelle/gow/releases ) e garantir que ele estivesse usando a ferramenta ssh dentro desse diretório e não a do Git. Depois de instalado, teste com (verifique se, no seu ambiente, PATH é anterior ao Git \ bin)

C:\Git\htest2>which ssh
C:\Program Files (x86)\Gow\bin\ssh.BAT

Eu usei massa e concurso como descrito aqui: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/

Depois que as chaves foram enviadas para o heroku (chaves do heroku: adicione c: \ Users \ Person.ssh \ id_rsa.pub), use

ssh -v <username>@heroku.com 

e verifique se sua pilha está mostrando o uso de Putty - ou seja, uma pilha de trabalho:

Looking up host "heroku.com"
Connecting to 50.19.85.132 port 22
Server version: SSH-2.0-Twisted
Using SSH protocol version 2
**We claim version: SSH-2.0-PuTTY_Release_0.62**
Using Diffie-Hellman with standard group "group1"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "*--ommitted for security--*".
**Trying Pageant key #0**
Authenticating with public key "rsa-key-20140401" from agent
Sending Pageant's response
Access granted
Opened channel for session
Server refused to allocate pty
Server refused to start a shell/command
FATAL ERROR: Server refused to start a shell/command

Um que estava sendo executado anteriormente e falhou:

C:\Git\htest2>ssh -v <username>@[email protected]
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Connecting to heroku.com [50.19.85.156] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Person/.ssh/identity type -1
debug1: identity file /c/Users/Person/.ssh/id_rsa type 1
debug1: identity file /c/Users/Person/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version Twisted
debug1: no match: Twisted
debug1: Enabling compatibility mode for protocol 2.0
**debug1: Local version string SSH-2.0-OpenSSH_4.6**
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/Person/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/Person/.ssh/identity
debug1: Offering public key: /c/Users/Person/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Trying private key: /c/Users/Person/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
user3484361
fonte
Só para dizer que isso está usando o Windows 8 (8.1). Também parece que a ferramenta GoW ssh é a chave, já que eu era capaz de usá-la sem os pedaços de massa e usar ssh-keygen.
user3484361
2

você precisa criar uma nova chave ssh digitando o seguinte - ssh-keygen -t rsa

Então você precisa adicionar: - heroku keys: add

Então, se você digitar - heroku open

O problema foi resolvido.

De qualquer forma, funcionou para mim, você pode tentar ...

nabin
fonte
2

Eu recebi o mesmo erro e, como tenho 4 chaves ssh, tentei seguir:

ssh-keygen -t rsa
heroku keys:add

então, quatro opções são exibidas:

1) github_rsa.pub
2) id_boot2docker.pub
3) id_rsa.pub
4) sshkey.pub

Eu escolho 3), o mais novo

Então, eu corrijo o erro.

rocLv
fonte
1

Eu uso esse método para resolver esse problema Talvez você possa tentar

"Ativar ssh-agent"

  1. Baixar git

http://git-scm.com/

  1. Instale-o

  2. Ativar ssh-agent

C: \ Arquivos de programas \ Git \ cmd

start-ssh-agent

A mensagem desaparece após a ativação do agente Espero que isso ajude você

徐啟倫
fonte
1

Gostaria de adicionar outra solução, pois não a vi aqui. Meu problema era que o heroku estava vinculado ao URL errado (desde que eu continuava brincando com os nomes dos URLs). A edição do URL remoto resolveu meu problema:

git remote set-url heroku <heroku-url-here>
ytv
fonte
0

Eu tive o mesmo problema. E tentei redefinir minhas chaves como todos disseram, mas ainda não funcionou. Pois foi porque eu renomeei o aplicativo.

Então, o que fiz foi redefinir minhas chaves e também renomear o aplicativo do console. Verifique esta pergunta para obter mais informações: Heroku push app problem

Alin Ciocan
fonte
0

Portanto, solução tão simples, vá para c: /Users/user_name/.ssh/ e exclua todos os pares de chaves públicas / privadas, desta forma o heroku irá gerar chaves para você.

00imvj00
fonte
0

Eu tive um erro similar do heroku ssh que não consegui resolver.

Como solução alternativa, usei o novo recurso heroku http-git (transporte http para o controle remoto "heroku" em vez do ssh). Detalhes aqui: https://devcenter.heroku.com/articles/http-git

(Versão curta: se você já possui um projeto configurado da maneira padrão, execute heroku git: remote --http-init para alterar o "heroku" remote para http.)

Uma boa solução rápida, se você não tiver tempo para corrigir / solucionar um problema ssh.

FullTimeCoderPartTimeSysAdmin
fonte
No meu caso, o problema parece estar relacionado a ":" em caminhos remotos ssh. (Git 1.9.4 para windows.) Por alguma razão, ssh: // git @ host: repo falha com "fatal: não foi possível ler do repositório remoto", enquanto ssh: // git @ host / repo "é bem-sucedido.
FullTimeCoderPartTimeSysAdmin