Frage Berechtigung verweigert (publickey) beim Bereitstellen von Heroku-Code. fatal: Das Remote-Ende wurde unerwartet beendet


Ich versuche, meinen Code mit der folgenden Befehlszeile in heroku zu implementieren:

git push heroku master

aber bekomme folgenden Fehler:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Ich habe meinen öffentlichen SSH-Schlüssel bereits hochgeladen, aber dieser Fehler wird immer noch angezeigt.


832


Ursprung


Antworten:


Sie müssen Ihren öffentlichen Schlüssel zu Heroku hochladen:

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

Wenn Sie keinen öffentlichen Schlüssel haben, fordert Sie Heroku auf, automatisch einen hinzuzufügen, was nahtlos funktioniert. Benutz einfach:

heroku keys:add

Um alle vorherigen Schlüssel zu löschen, tun Sie Folgendes:

heroku keys:clear

Um alle vorhandenen Schlüssel anzuzeigen, tun Sie Folgendes:

heroku keys

BEARBEITEN:

Das oben genannte schien nicht für mich zu funktionieren. Ich hatte mich mit dem herumgesprochen HOME Umgebungsvariable und so suchte SSH nach Schlüsseln im falschen Verzeichnis.

Um sicherzustellen, dass SSH nach dem Schlüssel im richtigen Verzeichnis sucht, machen Sie Folgendes:

ssh -vT git@heroku.com

Welche zeigt die folgenden (Beispiel) Linien

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/Wrong/Directory/.ssh/identity type -1
debug1: identity file /c/Wrong/Directory/.ssh/id_rsa type -1
debug1: identity file /c/Wrong/Directory/.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/Wrong/Directory/.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/Wrong/Directory/.ssh/identity
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_rsa
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_dsa
debug1: No more authentication methods to try.

Permission denied (publickey).

Von oben konnte man beobachten, dass ssh nach den Schlüsseln im. Sucht /c/Wrong/Directory/.ssh Verzeichnis, in dem wir nicht die öffentlichen Schlüssel haben, die wir gerade zu heroku hinzugefügt haben (using heroku keys:add ~/.ssh/id_rsa.pub ) ( Bitte beachten Sie, dass in Windows OS ~ bezieht sich auf HOME Pfad, der in Gewinn 7/8 ist C:\Users\UserName )

So zeigen Sie Ihr aktuelles Home-Verzeichnis an: echo $HOME oder echo %HOME% (Windows)

Um deine zu setzen HOME Verzeichnis korrekt (mit richtig meine ich das übergeordnete Verzeichnis von .ssh Verzeichnis, so dass ssh nach Schlüsseln im richtigen Verzeichnis suchen könnte)

  1. SO Antwort darauf, wie die Unix-Umgebungsvariable dauerhaft gesetzt wird

  2. SO Frage nach ssh nach Schlüsseln im falschen Verzeichnis suchen und eine Lösung für das gleiche.


1449



Ich hatte das gleiche Problem, die folgenden Schritte funktionierten für mich,

->heroku login

abc@gmail.com & Passwort

->cd C:\Users\yourusername\.ssh    (OR for cygwin shell ->cd ~/.ssh)

->ssh-keygen -t rsa -f id_rsa

Wenn Sie eine beliebige Passphrase eingeben, verwenden Sie kein Leerzeichen, füllen Sie eine Passphrase, aber vergessen Sie sie nicht.

Nachdem Sie den Schlüssel erzeugt haben, müssen Sie ihn hinzufügen

$ ssh-add

und es zu Heroku

->heroku keys:add "id_rsa.pub"

Wechseln Sie das Verzeichnis in den Arbeitsbereich

->git clone git@heroku.com:stark-dawn-1234.git -o heroku

Verwenden Sie die Passphrase, die Sie oben festgelegt haben.


Eigentlich entferne ich auch die Dateien unten, bin mir aber nicht sicher, ob sie imp sind,

C: \ Benutzer \ IhrNutzername.heroku \ credientals und C: \ Benutzer \ IhrNutzername.ssh \ bekannte_Hosts


144



Dieses Problem hat mich ein paar Tage durcheinander gebracht.

Dies könnte helfen.

1) Finde heraus, welche Schlüssel du jetzt in Heroku hast.

$ heroku keys
=== 1 key for joe@example.com
ssh-dss AAAAB8NzaC...DVj3R4Ww== joe@workstation.local

2) Erstellen Sie eine ~ / .ssh / config Datei:

$ sudo vim ~/.ssh/config

Mit dieser Info bearbeiten

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss # location and name of your private key
TCPKeepAlive yes 
User joe@workstation.local

89



Hier ist der Link, der erklärt, wie Sie Ihre SSH-Schlüssel verwalten: http://devcenter.heroku.com/articles/keys#adding_keys_to_heroku


62



Ich hatte das gleiche Problem, weil ich keine öffentlichen Schlüssel hatte, also tat ich:

heroku keys:clear
heroku keys:add

Das erzeugt einen öffentlichen Schlüssel und dann funktioniert es gut


34



Wenn Sie ein Windows-Benutzer sind, werden die anderen Lösungen hier Ihr Problem wahrscheinlich nicht lösen.

Ich benutze Windows 7 64-Bit + Git-1.7.7.1-preview20111027 und die Lösung bestand darin, meine Schlüssel zu kopieren C:\users\user\.ssh zu C:\Program Files (x86)\Git\.ssh. Hier sucht der Git-Client nach den Schlüsseln, wenn er nach Heroku schiebt.

Ich hoffe das hilft.


31



Das war die Lösung für mich:

ssh-add ~/.ssh/my_heroku_key_rsa

29



Um meine Erfahrung zu teilen:

Git (meine eigene Installation) suchte nach dem Schlüssel namens 'id_rsa'.

Also habe ich es versucht Benenne meine Schlüssel in 'id_rsa' und 'id_rsa.pub' um und es hat funktioniert.

Übrigens bin ich mir sicher, dass es einen anderen Weg gibt, aber ich habe noch nicht tiefer geschaut.


15