it-swarm.com.de

Heroku 'Erlaubnis verweigert (publickey) fatale: Konnte nicht von Remote-Repository' Leiden lesen

Ich habe stundenlang nach einer Lösung für mein scheinbar einfach zu behebendes Problem gesucht. Es ist nicht so, dass meine Suche nichts ergab, sondern dass meine Suche so viele verschiedene Lösungen ergab, von denen keine funktioniert hat.

Wie auch immer, ich bin einfach nicht in der Lage, von meinem Mac aus mein Heroku-Repository zu pushen, zu ziehen oder zu holen. Jeder Versuch gibt mir den folgenden Fehler (als würde er mich verspotten):

'Erlaubnis verweigert (publickey). fatal: Konnte nicht aus dem Remote-Repository lesen. '

Ich habe versucht (und erneut versucht), es auf viele verschiedene Arten zu beheben. Wie gesagt, ich habe in den letzten zwei Tagen einen guten Teil damit verbracht, nach einer Antwort zu suchen. Hier sind einige der Dinge, die ich ausprobiert habe:

  • heroku-Tasten: Löschen, gefolgt von Heroku-Tasten: Hinzufügen
  • Einen SSH-Schlüssel mit 'ssh-keygen -t rsa' selbst neu generieren
  • Löschen meines .ssh-Verzeichnisses, gefolgt von heroku-Schlüsseln: Löschen, gefolgt von der Erzeugung eines ssh-Schlüssels
  • Meine App auf Heroku löschen und eine neu erstellen (zum Glück war nicht viel da)

Ich kann gut von meinem GitHub-Repository abrufen, daher weiß ich, dass es keine Netzwerkverbindung gibt (Ping Heroku funktioniert auch).

Als Notlösung (die hoffentlich keine dauerhafte Lösung wird) habe ich mich bei meiner Ubuntu Amazon AWS ec2-Instanz angemeldet. Das Ziehen und Drücken von und zu Heroku funktioniert perfekt. Aus diesem Grund habe ich immer noch das Gefühl, dass das Problem mit der SSH-Taste auf meinem Mac liegt. Beide Schlüssel erscheinen unter meinem Heroku-Konto. Ist die E-Mail-Adresse am Ende des Schlüssels von Bedeutung?

EDIT: Ich kann gut von GitHub aus pushen und ziehen (ich verwende jedoch kein ssh), also warum nicht Heroku?

An diesem Punkt bin ich bereit, alles zu versuchen. Vielen Dank!

137
thebradbain

Ich dachte nur, ich würde teilen, dass ich die Antwort auf meine eigene Frage gefunden habe.

Das Aufschreiben meines Problems machte es mir noch klarer und ich untersuchte weiter, wo mein Problem lag: der SSH-Schlüssel

Es stellte sich heraus, dass ich recht hatte. Das Problem lag nicht am Schlüssel selbst, sondern darin, dass ich ihn nicht zur Liste der bekannten SSH-Schlüssel meines lokalen Macs hinzugefügt hatte. Obwohl mein Heroku-Konto den richtigen Schlüssel hochgeladen hatte, konnte sich mein Mac nicht damit authentifizieren, da er diesen Schlüssel auf meinem Computer nicht finden konnte. Die Lösung?

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

Ich möchte https://help.github.com/articles/error-permission-denied-publickey als gute Referenz danken.

122
thebradbain

Ich weiß, dass dies bereits beantwortet wurde. Ich möchte jedoch meine Lösung hinzufügen, da sie möglicherweise in Zukunft für andere hilfreich sein wird.

Ein häufiger Schlüsselfehler ist: Permission denied (publickey). Sie können dies beheben, indem Sie keys:add, um Heroku über deinen neuen Schlüssel zu informieren.

Kurz gesagt, folgen Sie diesen Schritten: https://devcenter.heroku.com/articles/keys

Zuerst müssen Sie einen Schlüssel erstellen, wenn Sie keinen haben:

ssh-keygen -t rsa

Zweitens müssen Sie den Schlüssel zu Heroku hinzufügen:

heroku keys:add
278
Kris Hollenbeck

Ich hatte genau den gleichen Fehler (unter Windows 7) und die Ursache war anders. Ich habe es auf eine andere Art gelöst und dachte, ich würde die Ursache und Lösung hier für andere hinzufügen.

Auch wenn der Fehler wirklich auf Heroku zu verweisen schien, sagte der Fehler "Heroku can't get to the git repository". Ich habe geschworen, auf allen Servern die gleichen Schlüssel zu haben, weil ich sie erstellt und gleichzeitig nacheinander hochgeladen habe.

Nachdem ich fast einen Tag damit verbracht hatte, stellte ich fest, dass git mir nur den Fingerabdruck und nicht den eigentlichen Schlüssel zeigte. Ich konnte nicht überprüfen, ob der Schlüssel mit meinem HD oder Heroku übereinstimmt. Ich habe in der bekannten Hosts-Datei nachgesehen und erraten, was ... es zeigt die Schlüssel für jeden Server und ich konnte klar erkennen, dass die öffentlichen git- und heroku-Schlüssel nicht übereinstimmen.

1) Ich habe alle Dateien in meinem Schlüsselordner gelöscht, den Schlüssel von github über die Website und den Schlüssel von heroku mit git bash und dem Befehl heroku keys:clear

2) Befolgen Sie die Anweisungen von github hier , um ein neues Schlüsselpaar zu generieren und den öffentlichen Schlüssel auf git hochzuladen

3) mit git bash-heroku keys:add, um denselben Schlüssel auf heroku hochzuladen.

Jetzt git Push heroku master funktioniert.

was für ein Albtraum, hoffe, das hat jemandem geholfen.

Bryan

31
Bryan Myers

Das Problem, das ich hatte, ist, dass ich nur https für meinen GitHub-Account verwendet habe. Ich musste sicherstellen, dass mein GitHub-Konto für den SSH-Zugriff eingerichtet war und dass GitHub und Heroku dieselben öffentlichen Schlüssel verwendeten. Dies sind die Schritte, die ich unternommen habe:

  1. Navigieren Sie zum Verzeichnis ~/.ssh und löschen Sie die Dateien id_rsa und id_rsa.pub, falls vorhanden. Ich habe mit neuen Schlüsseln begonnen, obwohl dies möglicherweise nicht erforderlich ist.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Folgen Sie den Schritten auf gitHub, um ssh-Schlüssel zu generieren
  3. Melde dich bei heroku an, erstelle eine neue Seite und füge deine öffentlichen Schlüssel hinzu:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git Push heroku master
    
17
sjking

ich hatte den gleichen Fall unter Linux Ubuntu und habe ihn gerade behoben. Es scheint, dass das Betriebssystem zwischen /root/.ssh/ und home/user/.ssh/dir verwechselt wurde.

  1. alle Schlüssel aus dem Stammverzeichnis und dem Verzeichnis home/user .shh entfernt.
  2. hat einen neuen Schlüssel generiert achte auf den Pfad der Schöpfung (/home/you/.ssh/id_rsa) oder (/root/.ssh/id_rsa)
  3. check heroku keys heroku keys
  4. wenn die Tasten dort frei sind, wird heroku keys:clear
  5. heroku keys:add jetzt hier drin, wenn Heroku keinen Schlüssel finden konnte und darum gebeten wurde, einen richtigen zu generieren, nein, und das heißt, Sie haben das gleiche Problem wie ich, führen Sie den Befehl add wie folgt aus heroku keys:add /root/.ssh/id_rsa.pub Der Pfad, den Sie hinzufügen, ist der Pfad, den Sie in Schritt 2 erhalten haben.
  6. versuchen git Push heroku master jetzt
6
oqx

Mein Weg unter Windows 8

  1. Fügen Sie der System-PATH-Variablen ein Verzeichnis mit ssh-keygen hinzu, normalerweise C:\Programme (x86)\Git\bin

  2. Öffne CMD, gehe zu C:\Users\Me \

  3. SSH-Schlüssel generieren ssh-keygen -t rsa

    Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (//.ssh/id_rsa): .ssh/id_rsa (ändern Sie einen falschen Standardpfad in .ssh/somegoodname_rsa)

  4. Füge den Schlüssel zu Heroku hinzheroku keys:add

    Wählen Sie einen erstellten Schlüssel aus einer Liste aus

  5. Gehe in dein App-Verzeichnis und schreibe schönen Code

  6. Initialisiere ein Git-Repo git initgit add .git commit -m 'chore(release): v0.0.1

  7. Heroku-Anwendung erstellenheroku create

  8. Stellen Sie Ihre App bereit git Push heroku master

  9. Öffne deine App heroku open

3
Ivan Rave

sie müssen einen neuen SSH-Schlüssel erstellen, indem Sie Folgendes eingeben: ssh-keygen -t rsa

Dann müssen Sie hinzufügen: - Heroku-Schlüssel: hinzufügen

Dann, wenn Sie eingeben - Heroku öffnen

Das Problem ist gelöst worden.

Bei mir hat es trotzdem geklappt, du könntest es versuchen ...

2
nabin

Hatte ein ähnliches Problem und habe viele Dinge ausprobiert. Letztendlich funktionierte es für mich, Gnu unter Windows zu installieren ( https://github.com/bmatzelle/gow/releases ) und sicherzustellen, dass Es wurde das SSH-Tool in diesem Verzeichnis verwendet und nicht das mit Git. Nach der Installation testen Sie mit (stellen Sie sicher, dass in Ihrer Umgebung der Pfad vor Git\bin steht)

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

Ich habe PuTTY und pageant wie hier beschrieben verwendet: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows- using-PuTTY-plink-pageant/

Nachdem die Schlüssel an heroku gesendet wurden (heroku keys: add c:\Users\Person.ssh\id_rsa.pub), verwenden Sie

ssh -v <username>@heroku.com 

und stellen Sie sicher, dass Ihr Stack PuTTY verwendet - dh einen funktionierenden Stack:

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

Eine, die zuvor ausgeführt wurde und fehlgeschlagen ist:

C:\Git\htest2>ssh -v <username>@[email protected]
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).
2
user3484361

Ich habe den gleichen Fehler erhalten und da ich 4 SSH-Schlüssel besitze, habe ich versucht zu folgen:

ssh-keygen -t rsa
heroku keys:add

dann zeigen vier Optionen:

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

Ich wähle 3), das neueste

Dann behebe ich den Fehler.

2
rocLv

Ich benutze diese Methode, um dieses Problem zu lösen. Vielleicht kannst du es versuchen

"Ssh-agent aktivieren"

  1. Git herunterladen

http://git-scm.com/

  1. Es installieren

  2. Ssh-agent aktivieren

C:\Programme\Git\cmd

start-ssh-Agent

Die Meldung verschwindet, nachdem ich den Agenten aktiviert habe. Hoffe, dies wird Ihnen helfen

1
徐啟倫

Ich möchte eine weitere Lösung hinzufügen, da ich sie hier nicht gesehen habe. Mein Problem war, dass Heroku mit der falschen URL verlinkt hat (da ich immer wieder mit URL-Namen rumgespielt habe). Das Bearbeiten der Remote-URL hat mein Problem gelöst:

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

SO So So einfache Lösung, gehen Sie zu c: /Users/user_name/.ssh/ und löschen Sie alle Pub/Private-Schlüsselpaare. Auf diese Weise generiert heroku Schlüssel für Sie.

0
00imvj00

Ich hatte einen ähnlichen Heroku-SSH-Fehler, den ich nicht beheben konnte.

Als Workaround habe ich die neue Heroku-Funktion http-git verwendet (http transport für "heroku" remote anstelle von ssh). Details hier: https://devcenter.heroku.com/articles/http-git

(Kurzversion: Wenn Sie ein Projekt bereits in der Standardeinstellung haben, führen Sie heroku git: remote --http-init aus, um "heroku" remote in http zu ändern.)

Eine gute schnelle Lösung, wenn Sie keine Zeit haben, ein SSH-Problem zu beheben/zu beheben.

Ich hatte das gleiche Problem. Und ich habe versucht, meine Schlüssel zurückzusetzen, wie alle sagten, aber es hat immer noch nicht funktioniert. Denn da habe ich die App umbenannt.

Also habe ich meine Schlüssel zurückgesetzt und die App von der Konsole aus umbenannt. Überprüfen Sie diese Frage für weitere Informationen: Heroku Push App Problem

0
Alin Ciocan