git push heroku master Autorizzazione negata (publickey). fatale: il terminale remoto si è bloccato in modo imprevisto


85

Per favore scusa un po 'di frustrazione, che cercherò di tenere sotto controllo poiché Heroku sta usando SO come supporto clienti (che penso sia a dir poco scadente).

Nelle ultime cinque ore ho cercato di far pubblicare un'applicazione, ma invariabilmente qualcosa va storto con le chiavi. Ho letto dozzine di articoli e provato punta dopo punta nel tentativo di capire dove, nello stupido e completamente opaco processo Heroku sta facendo un casino.

Il mio caso d'uso non è così difficile: ho creato una nuova coppia di chiavi per le mie app heroku. Ho impostato quella chiave per essere la mia chiave:

  > heroku keys
  === travis@xxxx.com Keys
  ssh-rsa AAAAB3NzaC...avOqfA7ZBd travis@xxxx.com

Posso accedere e "creare" un'applicazione (nome stupido, poiché sembra che stia creando un repository git, non qualsiasi tipo di app) senza problemi. Ma ogni * folle * volta che provo a spingere la mia app, ottengo:

  > git push heroku master
  Permission denied (publickey).
  fatal: The remote end hung up unexpectedly

Non ho idea di cosa stia succedendo WTF; Sono solo bloccato a sbattere la testa contro una tastiera senza possibilità di ricorso, ma nella speranza che l'onnipotente dio di Google possa rispondere. E Google non sta rispondendo (beh, lasciami riprendere, ho visto circa una dozzina di modi per rispondere a questo).

Per un sistema che dovrebbe essere facile, questo è uno scherzo. Mi piace l'idea di Heroku, ma dopo aver impiegato cinque ore per non fare assolutamente nulla , penso che forse sia la scelta sbagliata.


7
Ti faccio sapere che l'assistenza clienti che forniamo per Heroku è scadente di prima classe.
Robert Harvey

1
Non sono mai stato altro che impressionato dalla qualità delle risposte in SO. Penso solo che sia un modo noioso di fornire assistenza clienti per un prodotto, non importa quanto tecnico. Cosa succede se devo fornire i dettagli dell'account personale? Non esattamente quello che voglio condividere con il mondo (come ho capito quando ho dovuto modificare il post originale).
Travis Jensen

Hai visto questa domanda ? Soprattutto la parte relativa alla registrazione della tua chiave pubblica con git?
Ken White

7
Stesso problema, ho trovato la soluzione qui: http://www.whatibroke.com/?p=284

1
La soluzione collegata di Remi ha funzionato per me.
Deborah

Risposte:


149

Esistono numerose soluzioni sul Web. Cercherò di condensare le opzioni disponibili in un unico post. Riprova a connetterti dopo ogni passaggio.

  • Passaggio 1: prova ad aggiungere la tua chiave pubblica a Heroku

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys
    
  • Passaggio 2: genera un nuovo set di chiavi SSH, quindi riprova il primo passaggio

    https://help.github.com/articles/generating-ssh-keys

  • Passaggio 3: verifica e / o modifica il file di configurazione

    vim ~/.ssh/config
    
    Host heroku.com
    Hostname heroku.com 
    Port 22 
    IdentitiesOnly yes 
    IdentityFile ~/.ssh/id_rsa    <--- Should be your public SSH key
    TCPKeepAlive yes 
    User jsmith@gmail.com
    
  • Passaggio 4: rimuovere il telecomando heroku da git, ricreare la connessione, aggiungere il telecomando tramite heroku create sarà solo un'opzione per i nuovi repository. Assicurati di eliminare il vecchio repository che avevi originariamente tentato di creare

     $ git remote rm heroku
     $ heroku create
    
  • Passaggio 5: reinstallare Heroku Toolkit


10
Il passaggio 1 ha fatto il trucco per me! (Ho comunque ricreato le mie chiavi SSH per la mia macchina e Github prima di inviarle a Heroku.) Grazie!
ATSiem

1
NESSUNO di questo ha funzionato per me, nonostante sia stato eseguito con molta attenzione dall'alto due volte con installazioni pulite e tutto il resto. Alla fine, la cosa che ha fatto funzionare tutto è stata assicurarmi che la mia chiave GitHub e la chiave Heroku fossero la stessa. Non capisco nemmeno perché ciò abbia fatto la differenza, a meno che in qualche modo non mi sia accorto che Heroku si affida a GitHub, ma in qualche modo ha risolto il problema. Le chiavi possono essere modificate nelle impostazioni dell'account su GitHub. Penso che dovresti aggiungere questo nella tua risposta.
temporary_user_name

1
Credo che la riga IdentityFile dovrebbe essere la tua chiave SSH privata. Vedi stackoverflow.com/a/8874946/2816571
Paul

2
Volevi dire heroku create? git heroku createnon è una cosa, per quanto ne so.
Michael Dorst

1
Wow. Non riesco a pensare a niente di piacevole da dire su questa esperienza. Ho seguito numerose ricette, inclusa la disinstallazione / reinstallazione di git, github e la sostituzione di putty con msysgit. Il passaggio 1-3 finalmente lo ha fatto, ma la modifica doveva essere in github ssh_config. Dopo aver rilasciato e ripristinato più volte le mie chiavi GitHub senza problemi, il processo heroku è stato davvero frustrante.
wilk

13

La tua chiave heroku e le chiavi GitHub non sono sincronizzate.

  • Determina quale chiave desideri utilizzare (consigliamo di crearne una nuova, ad esempio heroku_rsa).

  • Aggiungi la chiave a GitHub.

  • Aggiungi la stessa chiave a heroku usando:heroku keys:add


4
Vorrei davvero, davvero, davvero aver letto questa risposta quattro ore fa. Anche se immaginavo di aver imparato molto lungo la strada, quindi, non tutto male.
temporary_user_name

Ho due diversi account Heroku (uno utilizza la mia email di lavoro, per i progetti al lavoro, l'altro utilizza la mia email personale, per i progetti freelance). Heroku non mi permette di usare la stessa chiave per entrambi. Quindi come posso usare la mia chiave Github per entrambi? (E perché Heroku specificamente bisogno di usare la mia chiave Github comunque cosa ha Heroku ha a che fare con Github Che cosa succede se non ho usato Github???) Sono così confuso
Callum

Ha funzionato come un fascino! Grazie!
Shashank

2

Ho riscontrato lo stesso problema e questa è la mia teoria su cosa sta succedendo:

Mi sono iscritto a Heroku molto tempo fa, dando loro la mia chiave pubblica GitHub. Quando tenta il solito git push heroku master, va a cercare la mia chiave privata, che si trova in ~/.ssh/github_rsa. Quindi fallisce silenziosamente con il messaggio che hai pubblicato.

Tuttavia, ho provato più tardi ad sshentrare in un altro server usando il -iflag per specificare il mio "file di identità" (cioè la chiave privata), e mi ha chiesto la password per la mia chiave privata. Dopo aver "sbloccato" la chiave privata, il git push heroku mastercomando funziona. Alcune conclusioni:

  • Mentre sshti chiederà la password per un file di identità, gitnon lo farà.
  • Se sblocchi il file di identità con un altro metodo, ad esempio ssh, rimarrà sbloccato per il tuo gitutilizzo.
  • Non sembra esserci alcuna documentazione su come rimuovere in modo permanente la protezione con password su un file di identità, anche con il comando unix comune keytool.
  • Le soluzioni precedenti per creare una nuova coppia di chiavi pubblica / privata sembrano essere una soluzione alternativa per questo problema di password, senza sapere che è il problema.


1

Con me, sembrava che il problema fosse che avevo ssh-agent in esecuzione in background e la relativa chiave privata non era stata aggiunta ad esso.

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

Ho anche dovuto aggiungere la chiave pubblica a github (manualmente) e heroku

heroku keys:add ~/.ssh/id_rsa_heroku_github.pub

0

Se nessuna delle altre soluzioni funziona per te, assicurati di aver effettuato l'accesso alla shell di Linux con il tuo account e non con l' account di root .

In questo modo, se stai correndo con l'utente che non è il proprietario delle tue chiavi ssh, git cercherà le chiavi sbagliate per l'autenticazione

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.