git push heroku master Berechtigung verweigert (publickey). tödlich: Das entfernte Ende legte unerwartet auf

85

Bitte entschuldigen Sie ein wenig Frustration, die ich versuchen werde, in Schach zu halten, da Heroku SO als Kundensupport verwendet (was ich gelinde gesagt für mies halte).

In den letzten fünf Stunden habe ich versucht, eine Anwendung zum Veröffentlichen zu bringen, aber mit den Schlüsseln geht immer etwas schief. Ich habe Dutzende von Artikeln gelesen und Tipp für Tipp versucht, um herauszufinden, wo Heroku in dem dummen, völlig undurchsichtigen Prozess Fehler macht.

Mein Anwendungsfall ist nicht so schwierig: Ich habe ein neues Schlüsselpaar für meine Heroku-Apps erstellt. Ich habe diesen Schlüssel als meinen Schlüssel festgelegt:

  > heroku keys
  === [email protected] Keys
  ssh-rsa AAAAB3NzaC...avOqfA7ZBd [email protected]

Ich kann mich problemlos anmelden und eine Anwendung "erstellen" (dummer Name, da es sich anscheinend um ein Git-Repo handelt, keine App). Aber jeder * freaking * Zeit versuche ich meine App zu schieben, erhalte ich:

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

Ich habe keinen Einblick in WTF, das damit weitergeht. Ich stecke nur fest und stoße meinen Kopf ohne Rückgriff gegen eine Tastatur, aber um zu hoffen, dass der allmächtige Gott von Google darauf antworten kann. Und Google antwortet nicht darauf (nun, lassen Sie mich das zurücknehmen, ich habe ungefähr ein Dutzend Möglichkeiten gesehen, dies zu beantworten).

Für ein System, das einfach sein soll, ist dies ein Witz. Ich mag die Idee von Heroku, aber nachdem ich fünf genommen habe, um absolut nichts zu erledigen, denke ich, dass es vielleicht die falsche Wahl ist.

Travis Jensen
quelle
7
Ich werde Sie wissen lassen, dass die Kundenbetreuung, die wir für Heroku anbieten, erstklassig ist.
Robert Harvey
1
Ich war nie etwas anderes als beeindruckt von der Qualität der Antworten bei SO. Ich denke nur, dass es eine lahme Art ist, Kundenunterstützung für ein Produkt bereitzustellen, egal wie technisch. Was passiert, wenn ich persönliche Kontodaten angeben muss? Nicht genau das, was ich mit der Welt teilen möchte (wie mir klar wurde, als ich den ursprünglichen Beitrag ändern musste).
Travis Jensen
Hast du diese Frage gesehen ? Besonders der Teil über die Registrierung Ihres öffentlichen Schlüssels bei git?
Ken White
7
Gleiches Problem, habe die Lösung hier: http://www.whatibroke.com/?p=284
1
Remis verknüpfte Lösung hat bei mir funktioniert.
Deborah

Antworten:

149

Im Internet gibt es eine Vielzahl von Lösungen. Ich werde versuchen, die verfügbaren Optionen in einem Beitrag zusammenzufassen. Bitte versuchen Sie Ihre Verbindung nach jedem Schritt erneut.

  • Schritt 1: Versuchen Sie, Ihren öffentlichen Schlüssel zu Heroku hinzuzufügen

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys
    
  • Schritt 2: Generieren Sie einen neuen Satz SSH-Schlüssel und wiederholen Sie den ersten Schritt

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

  • Schritt 3: Überprüfen und / oder ändern Sie Ihre Konfigurationsdatei

    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 [email protected]
    
  • Schritt 4: Entfernen Sie die Heroku-Fernbedienung aus Git. Das Wiederherstellen der Verbindung und das Hinzufügen der Fernbedienung über Heroku Create ist nur eine Option für neue Repositorys. Stellen Sie sicher, dass Sie Ihr altes Repo löschen, das Sie ursprünglich erstellt haben

     $ git remote rm heroku
     $ heroku create
    
  • Schritt 5: Installieren Sie das Heroku Toolkit neu

jquintana
quelle
10
Schritt 1 hat den Trick für mich getan! (Ich habe meine SSH-Schlüssel für meinen Computer und Github neu erstellt, bevor ich sie jedoch an Heroku gesendet habe.) Danke!
ATSiem
1
KEINES davon hat bei mir funktioniert, obwohl ich es zweimal sehr sorgfältig von oben mit sauberen Installationen und allem gemacht habe. Am Ende war es wichtig sicherzustellen, dass mein GitHub-Schlüssel und der Heroku-Schlüssel identisch waren. Ich verstehe nicht einmal, warum das einen Unterschied gemacht hat, es sei denn, ich habe irgendwie nicht bemerkt, dass Heroku sich auf GitHub verlässt, aber irgendwie hat es das Problem behoben. Schlüssel können in den Kontoeinstellungen auf GitHub geändert werden. Ich denke, Sie sollten dies in Ihre Antwort aufnehmen.
temporärer_Benutzername
1
Ich glaube, dass die IdentityFile-Zeile Ihr privater SSH-Schlüssel sein sollte. Siehe stackoverflow.com/a/8874946/2816571
Paul
2
Meinten Sie heroku create? git heroku createist keine Sache, soweit ich weiß.
Michael Dorst
1
Beeindruckend. Ich kann mir nichts Angenehmes über diese Erfahrung vorstellen. Ich habe zahlreiche Rezepte befolgt, darunter das Deinstallieren / Neuinstallieren von git, github und das Ersetzen von putty durch msysgit. Schritt 1-3 hat es endlich geschafft, aber die Änderung musste im github ssh_config sein. Nachdem ich meine Github-Schlüssel mehrmals ohne Probleme fallen gelassen und zurückgesetzt hatte, war der Heroku-Prozess wirklich frustrierend.
Wilk
13

Ihr Heroku-Schlüssel und Ihr Github-Schlüssel sind nicht synchron.

  • Bestimmen Sie, welchen Schlüssel Sie verwenden möchten (empfehlen Sie, einen neuen zu erstellen, z. B. heroku_rsa).

  • Fügen Sie den Schlüssel zu Github hinzu.

  • Fügen Sie Heroku den gleichen Schlüssel hinzu, indem Sie:heroku keys:add

Robert Christian
quelle
4
Ich wünschte wirklich, wirklich, wirklich , ich hätte diese Antwort vor vier Stunden gelesen. Obwohl ich angenommen habe, dass ich auf dem Weg viel gelernt habe, ist das nicht alles schlecht.
temporärer_Benutzername
Ich habe zwei verschiedene Heroku-Konten (eines mit meiner Arbeits-E-Mail für Projekte bei der Arbeit, das andere mit meiner persönlichen E-Mail-Adresse für freiberufliche Projekte). Heroku lässt mich nicht für beide den gleichen Schlüssel verwenden. Wie kann ich meinen Github-Schlüssel für beide verwenden? (Und warum muss Heroku überhaupt meinen Github-Schlüssel verwenden? Was hat Heroku mit Github zu tun? Was ist, wenn ich Github nicht verwendet habe?) Ich bin so verwirrt
Callum
Lief wie am Schnürchen! Vielen Dank!
Shashank
2

Ich bin auf dasselbe Problem gestoßen, und dies ist meine Theorie darüber, was los ist:

Ich habe mich vor langer Zeit für Heroku angemeldet und ihnen meinen öffentlichen Github-Schlüssel gegeben. Beim Versuch des Üblichen git push heroku mastergeht es und sucht nach meinem privaten Schlüssel, gefunden bei ~/.ssh/github_rsa. Es schlägt dann stillschweigend mit der von Ihnen geposteten Nachricht fehl.

Ich habe jedoch später versucht, sshmithilfe des -iFlags auf einen anderen Server zuzugreifen, um meine "Identitätsdatei" (dh den privaten Schlüssel) anzugeben, und wurde aufgefordert, das Kennwort für meinen privaten Schlüssel einzugeben. Nachdem der private Schlüssel "entsperrt" wurde, git push heroku masterfunktioniert der Befehl. Einige Schlussfolgerungen:

  • Während sshSie zur Eingabe des Kennworts für eine Identitätsdatei aufgefordert werden, gitwird dies nicht der Fall sein .
  • Wenn Sie die Identitätsdatei mit einer anderen Methode sshentsperren, bleibt sie für Ihre gitVerwendung entsperrt .
  • Es scheint keine Dokumentation darüber zu geben, wie der Kennwortschutz für eine Identitätsdatei dauerhaft entfernt werden kann, auch nicht mit dem allgemeinen Unix-Befehl keytool.
  • Die oben genannten Lösungen zum Erstellen eines neuen öffentlichen / privaten Schlüsselpaars scheinen eine Problemumgehung für dieses Kennwortproblem zu sein, ohne zu wissen, dass dies das Problem ist.
owensmartin
quelle
1

Bei mir schien das Problem zu sein, dass im Hintergrund ssh-agent ausgeführt wurde und der entsprechende private Schlüssel nicht hinzugefügt wurde.

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

Ich musste auch den öffentlichen Schlüssel zu Github (manuell) und Heroku hinzufügen

heroku keys:add ~/.ssh/id_rsa_heroku_github.pub
Cobberboy
quelle
0

Wenn keine der anderen Lösungen für Sie funktioniert, stellen Sie sicher, dass Sie mit Ihrem Konto und nicht mit dem Root- Konto in der Linux-Shell angemeldet sind .

Auf diese Weise sucht git nach den falschen Schlüsseln zur Authentifizierung, wenn Sie mit dem Benutzer arbeiten, der nicht der Eigentümer Ihrer SSH-Schlüssel ist

Saulo Falcao
quelle