wake-up-neo.com

Berechtigung verweigert (publickey), wenn Heroku-Code bereitgestellt wird. fatal: Das entfernte Ende hat unerwartet aufgelegt

Ich versuche, meinen Code mit der folgenden Befehlszeile für Heroku bereitzustellen:

git Push heroku master

bekomme aber folgenden fehler:

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

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

845
vich

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

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

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

heroku keys:add

Um alle Ihre vorherigen Schlüssel zu löschen, gehen Sie wie folgt vor:

heroku keys:clear

So zeigen Sie alle vorhandenen Schlüssel an:

heroku keys

BEARBEITEN:

Das Obige schien für mich nicht zu funktionieren. Ich hatte mit der Umgebungsvariablen HOME rumgespielt und so suchte SSH im falschen Verzeichnis nach Schlüsseln.

So stellen Sie sicher, dass SSH nach dem Schlüssel im richtigen Verzeichnis sucht:

ssh -vT [email protected]

Welches die folgenden (Beispiel-) Zeilen anzeigen wird

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).

Anhand des obigen Beispiels können Sie feststellen, dass ssh nach den Schlüsseln im Verzeichnis /c/Wrong/Directory/.ssh sucht, in dem sich nicht die öffentlichen Schlüssel befinden, die wir gerade zu heroku hinzugefügt haben (mithilfe von heroku keys:add ~/.ssh/id_rsa.pub) ( Bitte beachten Sie, dass in Windows-Betriebssystemen ~ auf den HOME -Pfad verweist, der in Win 7/8 C:\Users\UserName ist

So zeigen Sie Ihr aktuelles Basisverzeichnis an: echo $HOME oder echo %HOME% (Windows)

Um Ihr HOME -Verzeichnis richtig einzustellen (mit richtig meine ich das übergeordnete Verzeichnis des .ssh -Verzeichnisses, damit ssh nach Schlüsseln im richtigen Verzeichnis suchen kann), verweisen Sie auf diese Links:

  1. SO Beantworten Sie, wie Unix-Umgebungsvariablen dauerhaft festgelegt werden sollen

  2. SO Frage bezüglich ssh auf der Suche nach Schlüsseln im falschen Verzeichnis und eine Lösung dafür.

1468
sebarmeli

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

->heroku login

[email protected] & Passwort

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

->ssh-keygen -t rsa -f id_rsa

wenn Sie nach einer Passphrase gefragt werden, verwenden Sie kein Leerzeichen. Geben Sie eine Passphrase ein, aber vergessen Sie sie nicht.

Nachdem Sie den Schlüssel generiert haben, müssen Sie ihn wie folgt hinzufügen

$ ssh-add

und es zu heroku

->heroku keys:add "id_rsa.pub"

wechseln Sie in den Arbeitsbereich als

->git clone [email protected]:stark-dawn-1234.git -o heroku

verwenden Sie die oben angegebene Passphrase.


Eigentlich entferne ich auch die folgenden Dateien, bin mir aber nicht sicher, ob es sich um Kobolde handelt.

C:\Users\yourusername.heroku\credientals und C:\Users\yourusername.ssh\known_hosts

144
Onur Turhan

Dieses Problem hat mich einige Tage beschäftigt.

Das könnte helfen.

1) Finden Sie heraus, welche Schlüssel Sie jetzt in Heroku haben.

$ heroku keys
=== 1 key for [email protected]
ssh-dss AAAAB8NzaC...DVj3R4Ww== [email protected]

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

$ Sudo vim ~/.ssh/config

Bearbeiten Sie mit dieser Info

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss # location and name of your private key
TCPKeepAlive yes 
User [email protected]
90
jkpham

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

61
Lithium

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

heroku keys:clear
heroku keys:add

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

34

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

Ich benutze Windows 7 64-Bit + Git-1.7.7.1-preview20111027 und die Lösung war, meine Schlüssel von C:\users\user\.ssh nach C:\Program Files (x86)\Git\.ssh zu kopieren. Dort sucht dieser Git-Client nach den Schlüsseln, wenn er auf Heroku drückt.

Ich hoffe das hilft.

31
Leo

Das war die Lösung für mich:

ssh-add ~/.ssh/my_heroku_key_rsa
29
Gabor

Um meine Erfahrungen zu teilen:

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

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

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

15
Maxence

Wenn Sie den Schlüssel bereits hochgeladen haben, versuchen Sie, den Schlüssel zu entfernen und ihn mit einem neuen Schlüssel erneut hochzuladen.

 heroku keys:remove //removes the existing key
 ssh-keygen -t rsa //generates a new key in ~/.ssh folder
 heroku keys:add    //uploads the new key, if no arguments r passed then the key generated                              
                    //in default directroy i.e., ~/.ssh/id_rsa is uploaded
 git Push heroku

das sollte funktionieren.

11

Ich habe mich 3 Tage lang umgebracht und jede mögliche Kombination ausprobiert, um dies zum Laufen zu bringen. Schließlich habe ich versucht, stattdessen einen DSA -Schlüssel zu erstellen, und es hat funktioniert.

Versuchen Sie DSA anstelle von RSA, wenn es bei Ihnen nicht funktioniert.

(Ich verwende Ubuntu 11.10, Ruby 1.8.7, heroku 2.15.1.)

7
Sauce McBoss

Unter Windows 7,64 Bit funktionierte die oben genannte Lösung (Onur Turhan) für mich mit den folgenden geringfügigen Änderungen

C:\Users\MyName > heroku login

E-Mail/Passwort eingeben

C:\Users\MyName >ssh-keygen -t rsa -f id_rsa

Dadurch wurden zwei Dateien (id_rsa und id_rsa.pub) in meinem Verzeichnis c:\Users\MyName (nicht im Verzeichnis .ssh) erstellt.

heroku keys:add id_rsa.pub
git clone [email protected]:some-heiku-xxxx.git -o heroku

Ich denke, das Hinzufügen der richtigen "id_rsa.pub" -Datei ist die wichtigste. Nach dem Generieren des öffentlichen Schlüssels mit keygen überprüfen Sie einfach, ob Sie den richtigen Schlüssel hinzufügen, indem Sie den Zeitstempel betrachten, als er erstellt wurde.

6
Hrushikesh

Ich hatte dieses Problem, als TortoiseGIT auf meinem Computer installiert wurde. Nach dem Ändern der Umgebungsvariablen GIT_SSH von

"c:\Program Files\TortoiseGit\bin\TortoisePlink.exe"

zu

"c:\Program Files (x86)\Git\bin\ssh.exe"

und nach diesem Tutorial mit ssh-keygen und keys:add funktioniert es!

5
zooli

Ein einziger Befehl funktioniert:

heroku keys:add

Es wird eins machen, wenn es nicht existiert.

5
Travis Reeder

Schieben hat bei mir funktioniert und dann plötzlich aufgehört.

Wenn auf der Heroku-API Ausfallzeiten auftreten, wird dieser Fehler angezeigt, wenn Sie versuchen, Push auszuführen.

Prüfen:

https://status.heroku.com/

bevor sie zu stark ausflippen.

4
Tronathan

Folge folgt

$ heroku login
$ ssh-keygen -t rsa
$ heroku keys:add

Wenn Sie die zweite Anweisung ausführen, werden Sie um Eingabe gebeten. Drücken Sie einfach dreimal Enter (Return), und eine Taste wird hinzugefügt.

3
Saurabh Rana

Die oben angegebene Antwort funktioniert, aber ich habe festgestellt, dass ich einige zusätzliche Schritte ausführen muss, bevor es funktioniert.

  1. Ich habe alle id_rsa * -Dateien entfernt und mit this guide ein neues SSH generiert.
  2. Dann habe ich die Heroku-App zerstört. Die Datei ~/.heroku/credentials wurde entfernt.
  3. Befehl 'heroku create' (und da die Anmeldeinformationsdatei entfernt wird, werden Sie zur Eingabe Ihrer E-Mail-Adresse/Ihres Passworts aufgefordert.
  4. SCHLIESSLICH geben Sie 'heroku keys: add' ein und es wird die Standarddatei ~/.ssh/id_rsa.pub hochgeladen.
  5. Es klappt! Nun ... YMMV, aber ich hoffe wirklich, dass dies eine Hilfe sein kann, da ich den ganzen Tag mit Mühe versucht habe, dies herauszufinden! Haha
2
KoalaD

Für all diejenigen, die alles oben Genannte unter Windows 7 ausprobiert haben und es immer noch nicht funktioniert hat, habe ich Folgendes getan: - Öffnen Sie GitBash.exe aus dem Git-Verzeichnis C:\Programme (x86)\Git\(don ' t eine Eingabeaufforderung öffnen, dies funktioniert nicht). - Fügen Sie wie oben erwähnt Folgendes hinzu: oben , aber Sie müssen das # löschen.

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss
TCPKeepAlive yes 
User [email protected]

jetzt starte git Push heroku master und es sollte funktionieren.

2
Aymen Mouelhi

Überprüfen Sie Ihre .ssh-Konfiguration auf Heroku. Wechseln Sie in den Ordner .ssh und öffnen Sie die Konfigurationsdatei

cd ~/.ssh
subl config

Das 'subl' ist für Sublime Text, aber Sie können jeden gewünschten Editor verwenden. Suchen Sie nach der Zeile "IdentityFile" und vergewissern Sie sich, dass der nicht öffentliche Schlüssel aufgeführt ist:

IdentityFile "/Users/ircmullaney/.ssh/my_ssh"

nicht

IdentityFile "/Users/ircmullaney/.ssh/my_ssh.pub"

Das hat es für mich getan. Ich bin mir nicht sicher, warum ich die öffentliche Version in der Konfigurationsdatei hatte, aber es tat und es warf den Fehler:

Permissions 0644 for '/Users/ircmullaney/.ssh/my_ssh.pub' are too open.
1
Kevin K

Es hört sich so an, als ob Ihre ~/.ssh/authorized_keys -Datei nicht richtig eingerichtet ist. Überprüfen Sie, dass:

  • Es ist auf dem richtigen Weg.
  • Die Berechtigungen der Datei sind 0600.
  • Die Berechtigungen von ~/.ssh sind 0700.
1
cdhowie

Ich hatte immer noch Probleme, nachdem ich all diese Ideen ausprobiert hatte. Das war mein Problem:

Mein ferngesteuertes Heroku-Repository wurde gefunkelt. Ich habe es wie folgt aktualisiert:

git remote -v

Dann entferne das Heroku, das falsch ist:

git remote rm heroku

Fügen Sie dann die neue hinzu

git remote add heroku [email protected]:sitename.git

Den Site-Namen finden Sie auf Ihrer Heroku-Einstellungsseite für Ihre App. Viel Glück!

1
thatdankent

Ich hatte das gleiche Problem. Die folgenden Schritte sollten helfen:

  1. Zunächst melden Sie sich an: heroku login
  2. Alle Tasten löschen: Heroku-Tasten: Löschen
  3. Löschen Sie alle Dateien im lokalen Ordner (alle .pub Dateien und know_Host) in .ssh/ folder
  4. Melden Sie sich erneut an: heroku login - Sie werden ohne Schlüssel aufgefordert, folgen Sie den Anweisungen auf dem Bildschirm.
1
Novpiar Effendi

Ich musste es tun:

$ ssh-keygen -t rsa  
$ heroku keys:add  

Dann hat es geklappt:

$ git Push heroku master  
1
ericj

Das Problem, mit dem ich konfrontiert war, war unter Windows und immer dann, wenn ich die "Heroku-Schlüssel: Hinzufügen" ausführe, wurden die Github-Schlüssel ausgewählt. Also hier sind die Schritte, die ich befolgt habe, um das Problem zu beheben

  1. gehe in das .ssh Verzeichnis unter "Document and Settings" und lösche die git hub keys
  2. führen Sie den Befehl heroku keys aus: add

Der obige Befehl forderte mich auf, einen neuen Schlüssel zu generieren. Im Anschluss wurde die Ausgabe Konnte keinen vorhandenen öffentlichen Schlüssel finden. Möchten Sie eine generieren? [Yn] Y Generierung eines neuen öffentlichen SSH-Schlüssels. Hochladen des öffentlichen SSH-Schlüssels C:/Documents and Settings/Admin/.ssh/id_rsa.pub ... fertig! Der 'Heroku'-Edelstein wurde verworfen und durch den Heroku-Toolbelt ersetzt. Laden Sie ihn von https://toolbelt.heroku.com herunter und installieren Sie ihn.

  1. führen Sie den Befehl heroku keys erneut aus: add

Der obige Befehl gibt nicht die folgende Ausgabe aus Vorhandenen öffentlichen Schlüssel gefunden: C:/Dokumente und Einstellungen/Admin/.ssh/id_rsa.pub Hochladen des öffentlichen SSH-Schlüssels C:/Dokumente und Einstellungen/Admin/.ssh/id_rsa.pub. . getan

  1. Verwenden Sie nun den Git Push Heroku Master

mit den oben genannten Schritten konnte ich das Problem lösen und die Anwendung in der Cloud bereitstellen.

1
Ashok

Ich habe auch dieses Problem. Ich benutze Mac OSX. Die Art und Weise, wie ich das reparierte, war, sich als Admin anzumelden

Sudo su

passwort

0
Jake Lin

Versuchen Sie, die Berechtigungen im Festplatten-Dienstprogramm (Mac OS X) zu reparieren. Half mir

0
Ildar

Lösung von dmajkic hilf mir endlich:

Für Windows-Benutzer kann dies bedeuten, dass der Git-Client Ihre Schlüssel nicht findet. Überprüfen Sie die Schlüssel in c:\Users\UserName.ssh\und! Umgebungsvariable HOME = c:\Users\UserName \

0
GKislin

Wenn die anderen Antworten für Sie nicht funktionierten. Versuchen Sie dies!

Manchmal brauchen Sie nur noch einmal zu pushen. Es passiert mir heute aufgrund einer langsamen Internetverbindung (wenn Sie p2p herunterladen oder verwenden).

Bitte sehen Sie den Screenshot unten:

enter image description here

0
Adrian Enriquez

Hier ist, was für mich gearbeitet hat. Die Heroku-Site wird nicht zu Ihren bekannten Hosts hinzugefügt. Gehe zum Fenster-other- show view-git-git repositories. Von dort klonen Sie das Repository. Löschen Sie nach dem Klonen das soeben erstellte Repository und importieren Sie es aus dem Dateimenü. Tun Sie dies, da das Repository beim Klonen nicht zur Explorer-Ansicht hinzugefügt wird. Jetzt sollten Sie das Git-Repository und die Explorer-Ansicht haben.

0
James Murgolo

Wenn Sie "Sudo" verwenden möchten, Beispiel:

Sudo git clone [email protected] -o heroku

sie sollten auch einen SSH-Schlüssel für Ihren Root-Benutzer generieren.

Sudo su
cd /root/.ssh  
ssh-keygen -t rsa
....
heroku keys:add id_rsa.pub

und es wird funktionieren.

wenn Sie keinen Root-Benutzer verwenden, generieren Sie stattdessen den SSH-Schlüssel in Ihrem Benutzerverzeichnis.

cd /home/user/.ssh

Entschuldigung, wenn meine Sätze durcheinander sind ...

0
Kiddo

Ich habe heroku toolbelt neu installiert und es hat funktioniert.

0
Alexis

Anstatt sich mit SSH-Schlüsseln zu befassen, können Sie auch die neue Beta-HTTP-Git -Unterstützung von Heroku ausprobieren. Es verwendet nur Ihr API-Token und wird auf Port 443 ausgeführt, sodass Sie weder mit SSH-Schlüsseln noch mit Port 22 herumspielen müssen.

Um HTTP Git zu verwenden, stellen Sie zunächst sicher, dass Toolbelt aktualisiert wurde und Ihre Anmeldeinformationen aktuell sind:

$ heroku update
$ heroku login

(Dies ist wichtig, da sich Heroku HTTP Git auf eine etwas andere Weise als der Rest von Toolbelt authentifiziert.)

Während der Beta erhalten Sie HTTP, indem Sie das Flag --http-git an die entsprechenden Befehle heroku apps:create, heroku git:clone und heroku git:remote übergeben. Führen Sie Folgendes aus, um eine neue App zu erstellen und mit einer HTTP Git-Fernbedienung konfigurieren zu lassen:

$ heroku apps:create --http-git

Führen Sie zum Ändern einer vorhandenen App von SSH zu HTTP Git einfach den folgenden Befehl aus dem App-Verzeichnis auf Ihrem Computer aus:

$ heroku git:remote --http-git
Git remote heroku updated

Weitere Informationen zum Einrichten von HTTP Git für Heroku finden Sie in der Dev Center-Dokumentation .

0
ryanbrainard

beim schieben mit

git Push heroku production:master 

ihr öffentlicher Schlüssel im Home-Verzeichnis ~/.ssh/id_rsa wird verwendet

Um dies zu beheben

sie sollten sich als ein anderer Benutzer anmelden, der möglicherweise root ist

Sudo su 

starten Sie dann neu, indem Sie die folgenden Befehle eingeben

heroku keys:clear //removes existing keys
ssh-keygen -t rsa //generates a new key in ~/.ssh folder (set a password)
heroku keys:add   //uploads the new key, ~/.ssh/id_rsa is uploaded                      
git Push heroku production:master
0
HimalayanCoder

Stellen Sie zunächst sicher, dass versteckte Dateien auf Ihrem Mac sichtbar sind. Wenn nicht, mache:

  • Öffne das Terminal und tippe defaults write com.Apple.Finder AppleShowAllFiles TRUE ein
  • killall Finder

Nächste Schritte:

  • Bei Users/user_name/.ssh/ wurden alle Dateien entfernt.
  • Terminaltyp in ssh-keygen -t dsa öffnen
  • Dann heroku keys:add ~/.ssh/id_dsa.pub

N.B. Ich habe es in Mac OSX 10.7.2 Lion gemacht. Obwohl das Verfahren auch bei anderen gleich sein sollte.

0
Munim Dibosh

Ich möchte nur hinzufügen, dass das Verzeichnis nicht unbedingt C:\Users\[Benutzername] \. Ssh ist. Dies ist das Verzeichnis, in dem Sie Ihren öffentlichen Schlüssel erstellt haben.

Zum Beispiel wurde mein Home-Verzeichnis in Windows in C:\[Benutzername] geändert. Ihr Ausgangsverzeichnis in einem .ssh-Unterordner ist der beste und wahrscheinlichste Ort, an dem Sie Ihre Schlüssel erstellt haben. Sie können Ihr Home-Verzeichnis in Windows mit dem folgenden Befehl überprüfen:

    echo %HOMEPATH%
0
Nicholas