Heroku "Autorizzazione negata (chiave pubblica) fatale: impossibile leggere dal repository remoto" guai


139

Ho cercato per molte ore cercando una soluzione al mio problema apparentemente facile da risolvere. Non è che la mia ricerca non abbia prodotto nulla, è che la mia ricerca ha prodotto così tante soluzioni diverse, nessuna delle quali ha funzionato.

Comunque, non sono semplicemente in grado di spingere, estrarre o recuperare dal mio repository Heroku dal mio Mac. Ogni tentativo mi dà (come se mi stesse prendendo in giro) il seguente errore:

'Autorizzazione negata (chiave pubblica). fatale: impossibile leggere dal repository remoto. '

Ho provato (e riprovato) a risolverlo in molti modi diversi. Come ho detto, ho trascorso una buona parte degli ultimi due giorni alla ricerca di una risposta. Ecco alcune delle cose che ho provato:

  • tasti heroku: cancella seguito dai tasti heroku: aggiungi
  • Rigenerare una chiave ssh da solo con 'ssh-keygen -t rsa'
  • Cancella la mia directory .ssh, seguita dai tasti heroku: clear, seguito dalla generazione di un tasto ssh
  • Eliminare la mia app su heroku e ricrearne una (per fortuna non c'era molto lì)

Posso recuperare bene dal mio repository GitHub, quindi so che non è la connettività di rete (funziona anche il ping heroku).

Come soluzione improvvisata (che spero non si trasformi in permanente), ho effettuato l'accesso alla mia istanza Ubuntu Amazon AWS ec2. Tirare e spingere da e verso Heroku funziona perfettamente. Per questo motivo, mi sento ancora come se il problema risiedesse con il tasto SSH sul mio Mac. Entrambe le chiavi vengono visualizzate nel mio account Heroku. L'indirizzo e-mail alla fine della chiave è importante?

EDIT: posso spingere e tirare bene da GitHub (non sto usando ssh, tuttavia), quindi perché non Heroku?

A questo punto sono disposto a provare qualsiasi cosa. Grazie!


Hai impostato una passphrase per la tua chiave heroku? E suppongo che questo ( stackoverflow.com/a/16753800/6309 ) non sia d'aiuto? O duplice controllo stackoverflow.com/a/16753800/6309
VonC

Purtroppo rifiuta ancora di funzionare.
thebradbain,

a volte questo accade quando heroku è in manutenzione: status.heroku.com
Mavis,

Risposte:


284

So che è già stata data una risposta. Ma vorrei aggiungere la mia soluzione in quanto potrebbe essere utile per gli altri in futuro.

Un errore di chiave comune è: Permission denied (publickey). Puoi risolvere questo problema usando keys:addper avvisare Heroku della tua nuova chiave.

In breve, segui questi passaggi: https://devcenter.heroku.com/articles/keys

Per prima cosa devi creare una chiave se non ne hai una:

ssh-keygen -t rsa

Secondo, devi aggiungere la chiave a Heroku:

heroku keys:add

2
Grazie Kris, Qualcuno dal futuro :) Questo funziona per me
Ahmad Ajmi,

8
chiavi heroku: aggiungere era il mio tutorial perso immagino ... grazie! :)
Ole Henrik Skogstrøm,

La chiave deve essere generata solo se non hai un solo Alredy, nel mio caso Alredy aveva la chiave e avevo solo bisogno di aggiungere la chiave a Heroku
joseramonc,

4
Il primo non è necessario. heroku keys:addti aiuterà a crearne uno se non hai una chiave.
Mygod,

Esegui ssh-keygen -t rsase RSAnon viene generato altrimenti heroku keys:adddovrebbe essere sufficiente
Volatil3

122

Ho pensato di condividere che ho trovato la risposta alla mia domanda.

Scrivere il mio problema mi ha reso ancora più chiaro, e ho ulteriormente indagato su dove pensavo fosse il mio problema: la chiave ssh

Ho scoperto che avevo ragione. Il problema non riguardava la chiave stessa, ma piuttosto non l'avevo aggiunto all'elenco del mio Mac locale di chiavi ssh conosciute. Quindi, anche se sul mio account Heroku era stata caricata la chiave corretta, il mio Mac non poteva autenticarsi perché non riusciva a trovare quella chiave sul mio computer. La soluzione?

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

Vorrei dare credito a https://help.github.com/articles/error-permission-denied-publickey per essere un buon riferimento.


5
Grazie per il tuo feedback, più accurato per la tua situazione rispetto al mio commento iniziale. +1
VonC,

4
Su Windows sarà necessario avviare Git Bash(fare clic con il pulsante destro del mouse su una cartella) e avviarne uno ssh-agentche è possibile eseguendo `ssh-agent`(fare attenzione ai back-tick) e quindi aggiungere la chiave come descritto sopra. Devo farlo ogni volta che avvio Git Bash/ ssh-agent, dimentica ciò che è stato aggiunto.
TWiStErRob,

L'ho fatto e ancora non ha funzionato. Ho finito per dover aggiungere una variabile d'ambiente chiamata HOME impostata nella directory in cui si trovava la mia cartella .ssh
Justin

Grazie - non l'avrei mai capito!
Mark Hansen,

Questo risolto il mio problema, non la risposta più votata, grazie :)
Ryan Brodie,

31

Ho avuto lo stesso errore esatto (su Windows 7) e la causa era diversa. L'ho risolto in un modo diverso, quindi ho pensato di aggiungere qui la causa e la soluzione per gli altri.

Anche se l'errore sembrava indicare heroku, in realtà l'errore stava dicendo "Heroku can't get to the git repository". Ho giurato di avere le stesse chiavi su tutti i server perché l'ho creato e caricato contemporaneamente uno dopo l'altro.

Dopo aver trascorso quasi un giorno su questo, mi sono reso conto che perché Git mi stava mostrando solo l'impronta digitale e non la chiave reale. Non ho potuto verificare che la chiave corrispondesse a quella sul mio HD o heroku. Ho guardato il file hosts noto e indovina cosa ... mostra le chiavi per ciascun server e sono stato in grado di vedere chiaramente che le chiavi pubbliche git e heroku non corrispondevano.

1) Ho cancellato tutti i file nella mia cartella delle chiavi, la chiave da github usando il loro sito Web e la chiave da heroku usando git bash e il comando heroku keys:clear

2) Seguite le istruzioni di github qui per generare una nuova coppia di chiavi e caricare la chiave pubblica su git

3) usando git bash- heroku keys:add per caricare la stessa chiave su heroku.

Adesso git push heroku masterfunziona.

che incubo, spero che questo abbia aiutato qualcuno.

Bryan


1
Mi sono distrutto fino a quando non ho visto il tuo post. Non appena ho reso uguali le chiavi git e heroku, tutto è andato bene. Ma non capisco perché debbano essere gli stessi.
Kishore Masand,

Grazie per la risposta impiegata anni con questo problema
Ivan Bacher,

link di documentazione git molto utile, tutto funziona perfettamente
HotJard

Questo ha funzionato per me dopo un paio di giorni di tentativi di capirlo. Sono sorpreso che Heroku possa rimanere in affari con un problema di usabilità così brutto. Dovrebbe esserci un modo più semplice per farlo.
Luca F.

Grazie. Ha funzionato per me; solo una cosa: nel link github da qualche parte si dice di fare "ssh-add". Lì ho avuto un problema, ma ho trovato una soluzione qui: stackoverflow.com/questions/17846529/…
Alin Ciocan

17

Il problema che stavo riscontrando è che stavo usando https solo per il mio account GitHub. Avevo bisogno di assicurarmi che il mio account GitHub fosse configurato per l'accesso ssh e che GitHub e heroku usassero entrambi le stesse chiavi pubbliche. Questi sono i passi che ho preso:

  1. Passare alla directory ~ / .ssh ed eliminare id_rsa e id_rsa.pub, se presenti. Ho iniziato con nuove chiavi, anche se potrebbe non essere necessario.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Seguire i passaggi su gitHub per generare chiavi ssh
  3. Accedi a heroku, crea un nuovo sito e aggiungi le tue chiavi pubbliche:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    

6

ho avuto lo stesso caso su Ubuntu Linux e l'ho appena risolto, sembra che il sistema operativo fosse confuso tra /root/.ssh/ e home / user / .ssh / dir, quello che ho fatto è stato:

  1. rimosso tutte le chiavi dalla directory root e home / user .shh.
  2. ha generato una nuova chiave assicurati di prestare attenzione al percorso di creazione (/home/you/.ssh/id_rsa) o (/root/.ssh/id_rsa)
  3. controlla le chiavi di heroku heroku keys
  4. se le chiavi sono chiare heroku keys:clear
  5. heroku keys:addora qui se heroku non è riuscito a trovare una chiave e ha chiesto di generarne uno giusto no, e questo significa che hai lo stesso problema mio, fai il comando aggiungi in questo modo heroku keys:add /root/.ssh/id_rsa.pubil percorso che aggiungerai sarà quello che avrai nel passaggio 2.
  6. prova git push heroku masteradesso

3

La mia strada su Windows 8

  1. Aggiungi una directory con ssh-keygen alla variabile PATH di sistema, generalmente C: \ Programmi (x86) \ Git \ bin

  2. Apri CMD, vai a C: \ Users \ Me \

  3. Genera chiave SSH ssh-keygen -t rsa

    Inserisci il file in cui salvare la chiave (//.ssh/id_rsa): .ssh / id_rsa (modifica un percorso errato predefinito in .ssh / nome_del_seg)

  4. Aggiungi la chiave a Heroku heroku keys:add

    Seleziona una chiave creata da un elenco

  5. Vai alla directory della tua app, scrivi del bellissimo codice

  6. Iniziare un repository git git init git add . git commit -m 'chore(release): v0.0.1

  7. Crea l'applicazione Heroku heroku create

  8. Distribuisci la tua app git push heroku master

  9. Apri la tua app heroku open


2

Ha avuto un problema simile e ha provato molte cose. Alla fine quello che ha funzionato per me è stato installare Gnu su Windows ( https://github.com/bmatzelle/gow/releases ), e assicurarsi che stesse usando lo strumento ssh all'interno di quella directory e non quello con Git. Una volta installato test con (assicurarsi che sia nel proprio ambiente PERCORSO che precede Git \ bin)

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

Ho usato stucco e concorso come descritto qui: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/

Una volta che le chiavi sono state inviate a heroku (chiavi heroku: aggiungi c: \ Users \ Person.ssh \ id_rsa.pub), usa

ssh -v <username>@heroku.com 

e assicurati che il tuo stack mostri l'uso di Putty, ovvero uno stack funzionante

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

Uno che era in esecuzione in precedenza e non è riuscito:

C:\Git\htest2>ssh -v <username>@gmail.com@heroku.com
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).

Solo per dire che sta usando Windows 8 (8.1). Sembra anche che lo strumento GoW ssh sia la chiave, dal momento che sono stato in grado di usarlo senza i pezzi di stucco e usare ssh-keygen.
user3484361

2

devi creare una nuova chiave ssh digitando quanto segue - ssh-keygen -t rsa

Quindi è necessario aggiungere: - tasti heroku: aggiungi

Quindi se digiti - heroku aperto

Il problema è stato risolto.

Ha funzionato comunque per me, puoi provarlo ...


2

Ho avuto lo stesso errore, e poiché ho 4 ssh-keys, quindi ho provato a seguire:

ssh-keygen -t rsa
heroku keys:add

quindi, quattro opzioni mostrano:

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

Scelgo 3), il più recente

Quindi, correggo l'errore.


1

Uso questo metodo per risolvere questo problema Forse puoi provarlo

"Abilita ssh-agent"

  1. Scarica git

http://git-scm.com/

  1. Installalo

  2. Abilita ssh-agent

C: \ Programmi \ Git \ cmd

start-ssh-agent

Il messaggio scompare dopo aver abilitato l'agente Spero che questo ti possa aiutare


1

Vorrei aggiungere un'altra soluzione poiché non l'ho vista qui. Il mio problema era che l'heroku si stava collegando all'URL sbagliato (dal momento che continuavo a giocare con i nomi degli url). La modifica dell'URL remoto ha risolto il mio problema:

git remote set-url heroku <heroku-url-here>

0

Ho avuto lo stesso problema. E ho provato a resettare i miei tasti come dicevano tutti, ma non ha ancora funzionato. Perché era perché ho rinominato l'app.

Quindi quello che ho fatto è stato ripristinare le mie chiavi e anche rinominare l'app dalla console. Controlla questa domanda per ulteriori informazioni: Heroku push app problem


0

SO So So so simple solution, vai su c: /Users/user_name/.ssh/ ed elimina tutte le coppie di chiavi pub / private, in questo modo heroku genererà le chiavi per te.


0

Ho avuto un errore hersh ssh simile che non sono riuscito a risolvere.

Per ovviare al problema, ho usato la nuova funzione http-git di heroku (trasporto http per il telecomando "heroku" anziché ssh). Dettagli qui: https://devcenter.heroku.com/articles/http-git

(Versione breve: se si dispone già di un progetto configurato in modo standard, eseguire heroku git: remote --http-init per cambiare il telecomando "heroku" in http.)

Una buona soluzione rapida se non hai tempo per risolvere / risolvere un problema ssh.


Nel mio caso, il problema sembra essere correlato a ":" nei percorsi remoti ssh. (Git 1.9.4 per Windows.) Per qualche motivo ssh: // git @ host: repo non riesce con "fatale: impossibile leggere dal repository remoto" mentre ssh: // git @ host / repo "ha
esito
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.