Veuillez excuser un peu de frustration, que j'essaierai de garder en échec puisque Heroku utilise SO comme support client (ce que je pense que c'est de mauvaise qualité pour le moins)).
Au cours des cinq dernières heures, j'ai essayé d'obtenir une application à publier, mais invariablement quelque chose ne va pas avec les clés. J'ai lu des dizaines d'articles et essayé bout après bout pour essayer de savoir où, dans le processus stupide et complètement opaque, Heroku est en train de foirer.
Mon cas d'utilisation n'est pas si difficile: j'ai créé une nouvelle paire de clés pour mes applications Heroku. J'ai défini cette clé comme étant ma clé:
> heroku keys
=== [email protected] Keys
ssh-rsa AAAAB3NzaC...avOqfA7ZBd [email protected]
Je peux me connecter et "créer" une application (nom stupide, car il semble créer un dépôt git, pas n'importe quelle application) sans problème. Mais tous * flippant * time J'essaie de pousser mon application, j'obtiens:
> git Push heroku master
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Je n'ai aucune idée de ce que WTF fait avec; Je suis juste coincé en me cognant la tête contre un clavier sans recours, mais j'espère que le tout-puissant dieu de Google pourra y répondre. Et Google ne répond pas (eh bien, permettez-moi de reprendre cela, j'ai vu une douzaine de façons de répondre à cela).
Pour un système censé être facile, c'est une blague. J'aime l'idée de Heroku, mais après en avoir pris cinq pour obtenir absolument rien fait, je pense que ce n'est peut-être pas le bon choix.
Il existe une variété de solutions sur le Web. Je vais essayer de condenser les options disponibles en un seul post. Veuillez réessayer votre connexion après chaque étape.
Étape 1: essayez d'ajouter votre clé publique à Heroku
heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will Prompt you to pick one of your keys
Étape 2: Générez un nouvel ensemble de clés SSH, puis réessayez la première étape
Étape 3: Vérifiez et/ou modifiez votre fichier de configuration
vim ~/.ssh/config
Host heroku.com
Hostname heroku.com
Port 22
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa <--- Should be your public SSH key
TCPKeepAlive yes
User [email protected]
Étape 4: Supprimez la télécommande heroku de git, recréez la connexion, l'ajout de la télécommande via heroku create ne sera une option que pour les nouveaux référentiels. Assurez-vous de supprimer votre ancien référentiel que vous avez initialement tenté de créer
$ git remote rm heroku
$ heroku create
Étape 5: réinstaller Heroku Toolkit
Votre clé Heroku et vos clés Github ne sont pas synchronisées.
Déterminez la clé que vous souhaitez utiliser (recommandez d'en créer une nouvelle, par exemple heroku_rsa).
Ajoutez la clé à github.
Ajoutez la clé identique à heroku en utilisant: heroku keys:add
J'ai rencontré le même problème, et c'est mon théorie quant à ce qui se passe:
Je me suis inscrit à Heroku il y a longtemps, en leur donnant ma clé publique github. Lors de la tentative de git Push heroku master
, il va chercher ma clé privée, trouvée dans ~/.ssh/github_rsa
. Il échoue ensuite en silence avec le message que vous avez publié.
Cependant, j'ai essayé plus tard de ssh
dans un autre serveur en utilisant le -i
flag pour spécifier mon "fichier d'identité" (c'est-à-dire la clé privée), et il m'a demandé le mot de passe pour ma clé privée. Après avoir "déverrouillé" la clé privée, le git Push heroku master
la commande fonctionne. Quelques conclusions:
ssh
vous demandera le mot de passe d'un fichier d'identité, git
ne le fera pas.ssh
, il restera déverrouillé pour votre utilisation git
.keytool
.Je pense que cela pourrait avoir votre solution, ça l'a fait pour moi au moins
Avec moi, il semblait que le problème était que ssh-agent s'exécutait en arrière-plan et que la clé privée correspondante n'y avait pas été ajoutée.
ps -afe | grep ssh-agent
ssh-add ~/.ssh/id_rsa_heroku_github
J'ai également dû ajouter la clé publique à github (manuellement) et à heroku
heroku keys:add ~/.ssh/id_rsa_heroku_github.pub
Si aucune des autres solutions ne fonctionne pour vous, assurez-vous que vous êtes connecté au shell Linux avec votre compte et pas avec root compte.
De cette façon, si vous utilisez un utilisateur qui n'est pas le propriétaire de vos clés ssh, git recherchera les mauvaises clés pour s'authentifier