Impossible de pousser vers Heroku car l'empreinte digitale de la clé

131

Je suis nouveau sur Rails et j'essayais de déployer une application très simple sur Heroku. C'est la deuxième application que je déploie et la première que j'ai pu faire très bien. Cependant, j'ai quelques problèmes avec celui-ci. Chaque fois que je " git push heroku master ", j'obtiens cette erreur:

! Votre clé avec empreinte digitale xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx n'est pas autorisée à> accéder à my_heroku_app.

fatal: l'extrémité distante a raccroché de manière inattendue

J'ai essayé de gérer mes clés après m'être connecté à heroku. Si je tape dans ma console " heroku keys ", j'obtiens:

Aucune clé pour myemailaddress.

Cependant, si j'exécute la commande " touches heroku: ajoutez " je reçois

Clé publique existante trouvée: /Users/michele/.ssh/id_rsa.pub Téléchargement de la clé publique ssh /Users/michele/.ssh/id_rsa.pub! L'empreinte digitale existe déjà. Veuillez utiliser une clé ssh par compte Heroku

Aidez-moi, s'il vous plaît! C'est tellement frustrant, je n'ai aucune idée de ce qui ne va pas! Je vous remercie

mre
la source

Réponses:

288

J'ai eu le même problème, j'ai suivi ce post et d'autres du même genre sans succès: - ((

Enfin, j'ai trouvé la solution: j'ai dû ajouter ma nouvelle identité rsa dans ma machine!

Alors, tout d'abord, j'ai créé une nouvelle clé rsa:

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

puis l'a ajouté à ma machine

ssh-add ~/.ssh/id_rsa_heroku

et, enfin, à Heroku

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

Après ça,

git push heroku master

a fonctionné comme un charme!

J'espère que cela t'aides.

Giordano Scalzo
la source
47
C'était vraiment proche pour moi. Mais il y avait encore une chose. J'avais deux comptes heroku. Le premier avait ajouté ma clé SSH par défaut pour ma machine. Peu importe ce que j'ai fait en essayant de réparer mon deuxième compte, cela ne prendrait pas avant que je supprime ma clé par défaut du premier compte. SSH-AGENT enverra la première clé par défaut, provoquant ce problème. Le correctif consiste à créer des clés spécifiques pour heroku (pas la valeur par défaut) pour chaque compte
Tom Carchrae
13
J'ai eu le même problème que @TomCarchrae. Je me suis déconnecté du compte qui semblait définitivement interrompu heroku logout, je me suis connecté à l'autre compte et j'ai supprimé la clé RSA par défaut de ce compte. Après cela, j'ai pu pousser avec cette clé nouvellement générée.
Ross Allen
14
Pour moi personnellement, j'ai fait l'équivalent du ssh-add ~/.ssh/id_rsa_herokumien ssh-add ~/.ssh/identity.heroku.fooparce que j'utilise également https://github.com/ddollar/heroku-accounts (un gestionnaire de comptes multiples pour Heroku).
user664833
1
une autre chose à garder à l'esprit - si vous avez trop de clés SSH, il ne pourra pas se connecter car il essaie les clés dans l'ordre (et vous êtes expulsé de la connexion trop d'échecs). cela semble être une faille avec le ssh-agent (dans ubuntu de toute façon, mais je suppose que d'autres implémentations aussi). donc, si vous vous arrachez les cheveux, essayez de déplacer votre répertoire ~ / .ssh et d'en créer un nouveau (vous pouvez ensuite insérer les clés une par une).
Tom Carchrae
7
Vous pouvez influencer la clé envoyée en ajoutant une entrée d'hôte dans ~ / .ssh / config pour heroku.com pointant vers la clé souhaitée. C'était une solution rapide pour moi car il essayait toujours d'utiliser ma clé par défaut et échouait. Cela n'aidera probablement pas dans le cas de plusieurs comptes.
dnewcome le
61

Moi aussi, j'ai plusieurs clés et plusieurs comptes heroku, donc je rencontre ce problème tous les quelques mois. Comme mentionné Giordano Scalzo, Tom Carchrae et user664833, le principal problème est ssh-agent, que vous contrôlez à l'aide de la ssh-addcommande. La page de manuel ( man ssh-add) est en fait assez claire et concise, alors vérifiez-la.

Vous pouvez lister toutes les clés que ssh-agent connaît avec:

ssh-add -l

Vous pouvez supprimer toutes les clés que ssh-agent connaît avec:

ssh-add -D

Ou supprimez une clé spécifique avec

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

Ne t'inquiète pas! Vous ne supprimez pas réellement les clés, vous ne changez que celles que ssh-agent essaie d'utiliser automatiquement, par exemple, lorsque vous essayez de pousser vers heroku. Il est facile d'ajouter et de supprimer des clés au besoin, donc pour moi, lorsque je suis frustré par ce problème, le moyen le plus simple de le résoudre est de supprimer toutes les clés et de ne rajouter que celle que je souhaite utiliser pour le moment.

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it
Towynlin
la source
1
cela a bien fonctionné pour moi, mais essayer de rajouter ma clé ssh par défaut continuait à demander une phrase de passe (sur Mtn Lion), je ne pense pas que j'en ai une? Redémarré et était de retour à mon ssh par défaut tout ok - a également trouvé ce stackoverflow.com/questions/7927750/… qui fonctionne très bien
house9
frapper ma tête contre un mur pendant un bon moment sur celui-ci, et c'était la dernière étape requise - merci!
griswoldbar
Si vous avez essayé la première méthode, celle-ci (et que vous obtenez une erreur Permission Denied (publickey) lorsque vous essayez de pousser sur votre télécommande Heroku), vous avez probablement oublié de réexécuter les touches heroku: add command. Bref, merci beaucoup! Cela l'a fait pour moi.
Hairgami_Master
38

Votre ordinateur possède une clé SSH, mais cette clé SSH est associée à un autre compte Heroku.

Si vous devez utiliser les deux comptes pour différentes applications sur le même ordinateur, vous devez créer une nouvelle clé SSH sur votre machine et la télécharger sur Heroku:

$ ssh-keygen

Assurez-vous de l'enregistrer sous '/Users/User/.ssh/new_id_rsa.pub' lorsque l'invite vous le demande.

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

Vous devez ensuite ajouter un autre hôte heroku.comà votre ~/.ssh/config:

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

Et puis mettez à jour le .git/configdans votre projet pour utiliser l'alias d'hôte:

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

En choisissant entre heroku et heroku-altà distance des .git/configfichiers de projets spécifiques, vous pouvez gérer quels projets utilisent quelles informations d'identification.

Daniel X Moore
la source
1
Oui, c'était aussi le problème pour moi. Accéder à deux comptes Heroku depuis le même client. Merci.
Bernard
Je suis en train de faire cette méthode, mais « Hôte heroku-alt » me donne l'erreur: Host heroku-alt not found: 3(NXDOMAIN). Je mets ça dans le terminal sur Mountain Lion. ~/.ssh/confign'existe pas non plus, juste un tas de .pubfichiers et un appelé known_hosts. Et des idées?
JVG
@Jascination Vous devrez créer ~ / .ssh / config et insérer le contenu répertorié dans la réponse. Lorsque vous avez terminé Enregistrez le fichier et il contiendra les Host, HostNameet les IdentityFilelignes. Cela devrait alors fonctionner correctement.
Daniel X Moore
3
Excellent! Cette technique est si élégante!
kinopyo
Homme! Vous êtes génial. L'exécution étape par étape me soulage enfin. Je vous remercie !!
softvar
14

Voici une explication très claire qui manque dans la documentation Heroku ou dans d'autres réponses à la question. Au moins, toutes les informations ne semblent pas apparaître à un seul endroit. Cela vous permet également de comprendre le problème d'une manière que ne fait pas l'outil de comptabilité.

Heroku vous identifie de 2 manières:

Le premier est en .git / config

[heroku]
    account = acccount_name

Cela semble vous permettre d'effectuer des opérations de base en utilisant heroku

La deuxième façon dont heroku vous identifie est par toute opération qui utilise ssh (git push). Heroku vous identifiera par votre clé ssh, comme indiqué ici: https://devcenter.heroku.com/articles/keys

Cette paire de clés est utilisée pour la cryptographie forte et qui vous identifie de manière unique en tant que développeur lors de la transmission des modifications de code.

Ainsi, chaque compte heroku sur lequel vous travaillez devra envoyer une clé différente à heroku lors de l'utilisation de ssh. Suivez n'importe quel tutoriel pour créer vos clés ssh.

La clé est de faire en sorte que SSH utilise différentes clés pour chaque compte Heroku. Comment configurez-vous cela? Vous devrez faire 2 choses:

1) Vous devrez créer un domaine «factice» que votre .ssh / config interceptera et reconfigurera. Cela indiquera à ssh le domaine «réel» que vous voulez, et la clé spéciale ssh à utiliser.

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

2) Changez votre .git / config pour l'utiliser lorsque vous utilisez git push. Au lieu de heroku.com, utilisez le domaine factice que vous avez défini dans votre .ssh / config

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


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

Voilà :) Un peu compliqué et un peu simple à la fois. Il m'a fallu 3 ans pour me cogner la tête contre le mur et faire des essais et des erreurs pour découvrir cette info. Cela devrait être clairement documenté quelque part, mais au moins c'est un début.

pixelearth
la source
Le problème du nom d'hôte unique était mon problème. Merci beaucoup Pixelearth.
FluffyJack
Muchos Gracias Por Favor
EE33
9

vous devrez créer de nouvelles clés et les ajouter

spécifier un nouveau nom de fichier après l'exécution

ssh-keygen

alors (dans mon cas)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub
akmur
la source
3

J'ai le même problème la semaine dernière. Ce lien m'a aidé. J'espère que cela vous aide un peu. http://devcenter.heroku.com/articles/keys

Benjamin
la source
J'ai vu ce lien, essayé de supprimer et d'ajouter à nouveau mes clés, mais je n'arrive toujours pas à le faire fonctionner.
mre
Avez-vous réglé ce problème?
Benjamin
1
Pouvez-vous résumer les instructions sur ce lien? Nous essayons d'éviter les liens uniquement pour les réponses ici.
wax eagle
Cela explique seulement comment générer des clés et non comment en gérer plusieurs.
Macario
3

Dans mon cas, heroku keysj'avais déjà la bonne clé répertoriée. Donc, tout ce que j'avais à faire était de courir ssh-add /path/to/that/keyet tout a commencé à bien fonctionner.

M. Scott Ford
la source
2

J'ai également deux comptes Heorku et pour contourner le problème, j'ai "invité" mon compte principal (celui dont la clé est utilisée automatiquement par Heroku) en tant que collaborateur de mon projet.

Fabio CR
la source
1

Je veux juste ajouter la solution pour les utilisateurs de Windows.

  1. Téléchargez d'abord "Putty Key Generator"

  2. Créez une clé avec elle OBS dont vous avez besoin pour déplacer votre souris sur la zone vide pour générer un caractère aléatoire.

  3. Enregistrez vos clés, rappelez-vous simplement de renommer votre clé en [nom] .pub

  4. Courez heroku keys:adddans le terminal!

Rails débutant
la source
0

Dans mon cas, le problème était la version ssh que j'utilisais. Je viens de définir la variable d'environnement GIT_SSH sur une autre ("GIT_SSH = / usr / bin / ssh") et tout a fonctionné correctement pour moi.

gfhuertac
la source