Kann nicht auf Heroku drücken, da der Fingerabdruck des Schlüssels

131

Ich bin neu bei Rails und habe versucht, eine sehr einfache App für Heroku bereitzustellen. Dies ist die zweite App, die ich bereitstelle, und die erste, die ich problemlos ausführen konnte. Ich habe jedoch einige Probleme mit diesem. Immer wenn ich " Heroku Master drücke ", erhalte ich diesen Fehler:

! Ihr Schlüssel mit Fingerabdruck xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx ist nicht berechtigt, auf my_heroku_app zuzugreifen.

tödlich: Das entfernte Ende legte unerwartet auf

Ich habe versucht, meine Schlüssel zu verwalten, nachdem ich mich bei Heroku angemeldet habe. Wenn ich in meiner Konsole " Heroku Keys " eingebe , bekomme ich:

Keine Schlüssel für meine E-Mail-Adresse.

Wenn ich jedoch den Befehl " Heroku-Schlüssel: Hinzufügen " ausführe, erhalte ich

Vorhandenen öffentlichen Schlüssel gefunden: /Users/michele/.ssh/id_rsa.pub Hochladen des öffentlichen ssh-Schlüssels /Users/michele/.ssh/id_rsa.pub! Fingerabdruck existiert bereits. Bitte verwenden Sie einen SSH-Schlüssel pro Heroku-Konto

Bitte hilf mir! Das ist so frustierend, ich habe keine Ahnung, was los ist! Danke dir

mre
quelle

Antworten:

288

Ich hatte das gleiche Problem, ich folgte diesem Beitrag und anderen der gleichen Art ohne Erfolg: - ((

Schließlich fand ich die Lösung: Ich musste meine neue rsa-Identität in meine Maschine einfügen!

Also habe ich zuerst einen neuen rsa-Schlüssel erstellt:

ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f  ~/.ssh/id_rsa_heroku

dann fügte es meiner Maschine hinzu

ssh-add ~/.ssh/id_rsa_heroku

und schließlich zu Heroku

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

Nachdem,

git push heroku master

Lief wie am Schnürchen!

Hoffe das hilft.

Giordano Scalzo
quelle
47
Das war sehr nah für mich. Aber da war noch etwas. Ich hatte zwei Heroku-Konten. Der erste hatte meinen Standard-SSH-Schlüssel für meinen Computer hinzugefügt. Egal, was ich getan habe, um mein zweites Konto zu reparieren, es würde nicht dauern, bis ich meinen Standardschlüssel vom ersten Konto entfernt habe. SSH-AGENT sendet standardmäßig den ersten Schlüssel, wodurch dieses Problem verursacht wird. Das Update besteht darin, für jedes Konto spezifische Schlüssel für Heroku zu erstellen (nicht die Standardeinstellung)
Tom Carchrae
13
Ich hatte das gleiche Problem wie @TomCarchrae. Ich habe mich von dem Konto abgemeldet, mit dem es permanent kaputt zu sein schien, mich heroku logoutbei dem anderen Konto angemeldet und den Standard-RSA-Schlüssel von diesem Konto gelöscht. Danach konnte ich mit diesem neu generierten Schlüssel pushen.
Ross Allen
14
Für mich persönlich habe ich das Gleiche getan, ssh-add ~/.ssh/id_rsa_herokuobwohl ssh-add ~/.ssh/identity.heroku.fooich auch https://github.com/ddollar/heroku-accounts (einen Manager für mehrere Konten für Heroku) verwende.
user664833
1
Eine andere Sache, die Sie beachten sollten: Wenn Sie zu viele SSH-Schlüssel haben, kann es sich nicht anmelden, da die Schlüssel der Reihe nach ausprobiert werden (und Sie dann zu viele Fehler aus dem Login geworfen werden). Dies scheint ein Fehler mit dem SSH-Agenten zu sein (in Ubuntu sowieso, aber ich nehme auch andere Implementierungen an). Wenn Sie sich also die Haare ausreißen, versuchen Sie, Ihr ~ / .ssh-Verzeichnis zu verschieben und ein neues zu starten (Sie können dann die Tasten nacheinander eingeben).
Tom Carchrae
7
Sie können beeinflussen, welcher Schlüssel gesendet wird, indem Sie einen Hosteintrag in ~ / .ssh / config für heroku.com hinzufügen, der auf den gewünschten Schlüssel verweist. Dies war eine schnelle Lösung für mich, da immer wieder versucht wurde, meinen Standardschlüssel zu verwenden, und dies fehlschlug. Dies wird jedoch wahrscheinlich bei mehreren Konten nicht helfen.
Willkommen am
61

Ich habe auch mehrere Schlüssel und mehrere Heroku-Konten, daher stoße ich alle paar Monate auf dieses Problem. Wie bereits erwähnt, ist Giordano Scalzo, Tom Carchrae und user664833 das Hauptproblem ssh-agent, das Sie mit dem ssh-addBefehl steuern . Die Manpage ( man ssh-add) ist eigentlich ziemlich klar und prägnant, also probieren Sie es aus.

Sie können alle Schlüssel auflisten, die ssh-agent kennt:

ssh-add -l

Sie können alle Schlüssel löschen, die ssh-agent kennt mit:

ssh-add -D

Oder löschen Sie einen bestimmten Schlüssel mit

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

Mach dir keine Sorgen! Sie löschen die Schlüssel nicht wirklich, sondern ändern nur, welche ssh-agent automatisch zu verwenden versucht, beispielsweise wenn Sie versuchen, auf heroku zu drücken. Es ist einfach, Schlüssel nach Bedarf hinzuzufügen und zu löschen. Wenn ich von diesem Problem enttäuscht bin, ist es für mich am einfachsten, alle Schlüssel zu löschen und nur den Schlüssel wieder hinzuzufügen, den ich gerade verwenden möchte.

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it
Towynlin
quelle
1
Dies funktionierte gut für mich, aber der Versuch, meinen Standard-SSH-Schlüssel wieder hinzuzufügen, führte immer wieder zur Eingabe einer Passphrase (auf Mtn Lion). Glauben Sie nicht, dass ich eine habe? Neustart und war wieder auf meinem Standard-SSH alles in Ordnung - fand auch diese stackoverflow.com/questions/7927750/…, die großartig funktioniert
house9
Ich schlug meinen Kopf für eine Weile gegen eine Wand, und dies war der letzte Schritt, der erforderlich war - danke!
Griswoldbar
Wenn Sie die erste Methode ausprobiert haben, haben Sie wahrscheinlich vergessen, die Heroku-Schlüssel erneut auszuführen: Befehl add. Trotzdem vielen Dank! Das hat es für mich getan.
Hairgami_Master
38

Ihr Computer verfügt über einen SSH-Schlüssel, dieser SSH-Schlüssel ist jedoch einem anderen Heroku-Konto zugeordnet.

Wenn Sie beide Konten für verschiedene Anwendungen auf demselben Computer verwenden müssen, sollten Sie einen neuen SSH-Schlüssel auf Ihrem Computer erstellen und auf Heroku hochladen:

$ ssh-keygen

Stellen Sie sicher, dass Sie es als '/Users/User/.ssh/new_id_rsa.pub' speichern, wenn Sie dazu aufgefordert werden.

$ heroku keys:add /Users/User/.ssh/new_id_rsa.pub 

Sie müssen dann einen alternativen Host für heroku.comFolgendes hinzufügen ~/.ssh/config:

Host heroku-alt
HostName heroku.com
IdentityFile ~/.ssh/new_id_rsa

Aktualisieren .git/configSie dann das in Ihrem Projekt, um den Host-Alias ​​zu verwenden:

[remote "heroku"]
  url = git@heroku-alt:myapp.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

Durch Auswahl zwischen herokuund heroku-altin der Ferne der .git/configDateien bestimmter Projekte können Sie verwalten, welche Projekte welche Anmeldeinformationen verwenden.

Daniel X Moore
quelle
1
Ja, das war auch das Problem für mich. Zugriff auf zwei Heroku-Konten vom selben Client. Vielen Dank.
Bernard
Ich versuche diese Methode zu machen, aber "Host heroku-alt" gibt mir den Fehler : Host heroku-alt not found: 3(NXDOMAIN). Ich stelle das in das Terminal von Mountain Lion. ~/.ssh/configexistiert auch nicht, nur ein paar .pubDateien und eine aufgerufene known_hosts. Und Ideen?
JVG
@Jascination Sie müssen ~ / .ssh / config erstellen und den in der Antwort aufgeführten Inhalt eingeben. Wenn Sie speichern die Datei durchgeführt und es wird die enthalten Host, HostNameund die IdentityFileLinien. Es sollte dann gut funktionieren.
Daniel X Moore
3
Ausgezeichnet! Diese Technik ist so elegant!
Kinopyo
Mann! Du bist unglaublich. Die schrittweise Ausführung macht mir endlich Erleichterung. Danke !!
Softvar
14

Hier ist eine sehr klare Erklärung, die in der Heroku-Dokumentation oder anderen Antworten auf die Frage fehlt. Zumindest scheinen nicht alle Informationen an einem Ort zu erscheinen. Außerdem können Sie das Problem so verstehen, wie es das Konten-Tool nicht tut.

Heroku identifiziert Sie auf zwei Arten:

Der erste ist in .git / config

[heroku]
    account = acccount_name

Dies scheint es Ihnen zu ermöglichen, grundlegende Operationen mit auszuführen heroku

Die zweite Art, wie Heroku Sie identifiziert, ist eine Operation, die ssh (git push) verwendet. Heroku identifiziert Sie anhand Ihres SSH-Schlüssels, wie hier angegeben: https://devcenter.heroku.com/articles/keys

Dieses Schlüsselpaar wird für die starke Kryptografie verwendet und identifiziert Sie eindeutig als Entwickler, wenn Sie Codeänderungen vornehmen.

Daher muss jedes Heroku-Konto, an dem Sie arbeiten, einen anderen Schlüssel an Heroku senden, wenn Sie ssh verwenden. Befolgen Sie ein beliebiges Tutorial, um Ihre SSH-Schlüssel zu erstellen.

Der Schlüssel ist, dass SSH für jedes Heroku-Konto unterschiedliche Schlüssel verwendet. Wie konfigurieren Sie das? Sie müssen zwei Dinge tun:

1) Sie müssen eine 'Dummy'-Domain erstellen, die Ihre .ssh / config abfängt und neu konfiguriert. Dadurch wird ssh mitgeteilt, welche 'tatsächliche' Domain Sie möchten und welchen speziellen ssh-Schlüssel Sie verwenden möchten.

Host heroku.my_unique_key
  HostName heroku.com
  IdentityFile ~/.ssh/identity.heroku.my_unique_key
  IdentitiesOnly yes

2) Ändern Sie Ihre .git / config, um diese bei Verwendung von git push zu verwenden. Verwenden Sie anstelle von heroku.com die Dummy-Domain, die Sie in Ihrer .ssh / config festgelegt haben

[remote "heroku"]
    url = [email protected]


[remote "heroku"]
    url = [email protected]_unique_key:myapp.git

Das war's :) Ein bisschen kompliziert und ein bisschen einfach zugleich. Ich habe 3 Jahre gebraucht, um meinen Kopf gegen die Wand zu schlagen und Versuch und Irrtum, um diese Informationen zu entdecken. Es sollte irgendwo klar dokumentiert sein, aber zumindest ist es ein Anfang.

Pixelerd
quelle
Der eindeutige Hostname war mein Problem. Vielen Dank Pixelearth.
FluffyJack
Muchos Gracias Por Favor
EE33
9

Sie müssen neue Schlüssel erstellen und diese hinzufügen

Geben Sie nach dem Ausführen einen neuen Dateinamen an

ssh-keygen

dann (in meinem Fall)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub
Alemur
quelle
3

Ich habe letzte Woche das gleiche Problem. Dieser Link hat mir geholfen. Ich hoffe es hilft dir ein wenig. http://devcenter.heroku.com/articles/keys

Benjamin
quelle
Ich habe diesen Link gesehen, versucht, meine Schlüssel zu entfernen und wieder hinzuzufügen, kann ihn jedoch immer noch nicht zum Laufen bringen.
Mehr
Haben Sie dieses Problem gelöst?
Benjamin
1
Können Sie die Anweisungen unter diesem Link zusammenfassen? Wir versuchen hier nur Linkantworten zu vermeiden.
Wachs Adler
Dies erklärt nur, wie Schlüssel generiert werden und nicht, wie mehrere verwaltet werden.
Macario
3

In meinem Fall hatte heroku keysbereits der richtige Schlüssel aufgeführt. Also musste ich nur rennen ssh-add /path/to/that/keyund dann fing alles an gut zu funktionieren.

M. Scott Ford
quelle
2

Ich habe auch zwei Heorku-Konten und als Workaround habe ich mein Hauptkonto (das Konto, dessen Schlüssel automatisch von Heroku verwendet wird) als Mitarbeiter für mein Projekt "eingeladen".

Fabio CR
quelle
1

Ich möchte nur nicht die Lösung für Windows-Benutzer hinzufügen.

  1. Zuerst "Putty Key Generator" herunterladen

  2. Erstellen Sie damit einen Schlüssel. OBS Sie müssen Ihre Maus über den leeren Bereich bewegen, um Zufälligkeit zu erzeugen.

  3. Speichern Sie Ihre Schlüssel. Denken Sie daran, Ihren Schlüssel in [name] .pub umzubenennen

  4. heroku keys:addIm Terminal laufen !

Schienen Anfänger
quelle
0

In meinem Fall war das Problem die von mir verwendete SSH-Version. Ich habe gerade die Umgebungsvariable GIT_SSH auf eine andere gesetzt ("GIT_SSH = / usr / bin / ssh") und alles hat für mich in Ordnung funktioniert.

gfhuertac
quelle