139 votes

Heroku : "Permission refusée (publickey) fatal : Could not read from remote repository".

J'ai cherché pendant des heures et des heures une solution à mon problème apparemment facile à résoudre. Ce n'est pas que je n'ai rien trouvé, c'est que j'ai trouvé tellement de solutions différentes, dont aucune n'a fonctionné.

Quoi qu'il en soit, je suis tout simplement incapable de pousser, tirer ou récupérer mon dépôt Heroku depuis mon Mac. Chaque tentative me donne (comme s'il se moquait de moi) l'erreur suivante :

'Permission refusée (publickey). fatal : Could not read from remote distant.

J'ai essayé (et réessayé) de le réparer de différentes manières. Comme je l'ai dit, j'ai passé une bonne partie des deux derniers jours à chercher une réponse. Voici quelques-unes des choses que j'ai essayées :

  • heroku keys:clear suivi de heroku keys:add
  • Régénération d'une clé ssh par moi-même avec 'ssh-keygen -t rsa'.
  • Effacement de mon répertoire .ssh, suivi de heroku keys:clear, suivi de la génération d'une clé ssh.
  • Suppression de mon application sur heroku et recréation d'une autre (heureusement, il n'y avait pas grand chose dessus).

Je peux extraire des données de mon dépôt GitHub sans problème, donc je sais que ce n'est pas la connectivité réseau (l'envoi d'une requête à Heroku fonctionne également).

Comme solution de fortune (qui, je l'espère, ne se transformera pas en solution permanente), je me suis connecté à mon instance Ubuntu Amazon AWS ec2. L'extraction et le transfert vers et depuis Heroku fonctionnent parfaitement. Pour cette raison, j'ai toujours l'impression que le problème réside dans la clé ssh sur mon Mac. Les deux clés apparaissent sous mon compte Heroku. L'adresse électronique à la fin de la clé a-t-elle une importance ?

EDIT : Je peux pousser et tirer depuis GitHub sans problème (je n'utilise pas ssh, cependant), alors pourquoi pas Heroku ?

A ce stade, je suis prêt à tout essayer. Merci !

281voto

Kris Hollenbeck Points 5132

Une erreur de clé courante est : Permission denied (publickey) . Vous pouvez résoudre ce problème en utilisant keys:add pour notifier Heroku de votre nouvelle clé.

Je sais que cette question a déjà été traitée. Mais j'aimerais ajouter ma solution car elle pourrait être utile à d'autres dans le futur

Tout ce que j'avais à faire était de suivre ces étapes : https://devcenter.heroku.com/articles/keys

Vous devez d'abord créer une clé :

ssh-keygen -t rsa

Ensuite, vous devez ajouter la clé à Heroku :

heroku keys:add

122voto

thebradbain Points 1508

J'ai juste pensé que je devais partager le fait que j'ai trouvé la réponse à ma propre question.

Le fait d'écrire mon problème l'a rendu encore plus clair pour moi, et j'ai approfondi la recherche de l'origine du problème : la clé ssh.

Il s'avère que j'avais raison. Le problème ne venait pas de la clé elle-même, mais plutôt du fait que je ne l'avais pas ajoutée à la liste des clés ssh connues de mon Mac local. Ainsi, bien que la clé correcte ait été téléchargée sur mon compte Heroku, mon Mac ne pouvait pas s'authentifier avec elle car il ne pouvait pas la trouver sur mon ordinateur. La solution ?

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

Je voudrais donner le crédit à https://help.github.com/articles/error-permission-denied-publickey pour avoir été une bonne référence.

31voto

Bryan Myers Points 291

J'ai eu exactement la même erreur (sur Windows 7) et la cause était différente. J'ai résolu le problème d'une manière différente et j'ai pensé que je devais ajouter la cause et la solution ici pour les autres.

Même si l'erreur semblait pointer vers heroku, en réalité l'erreur disait "Heroku can't get to the git repository" . Je jurais que j'avais les mêmes clés sur tous les serveurs car je l'ai créé et téléchargé sur l'un après l'autre en même temps.

Après avoir passé presque une journée sur ce sujet, j'ai réalisé que parce que git ne me montrait que l'empreinte digitale et non la clé réelle. Je ne pouvais pas vérifier que la clé correspondait à celle de mon disque dur ou d'Heroku. J'ai regardé dans le fichier des hôtes connus et devinez quoi... il montre les clés pour chaque serveur et j'ai pu clairement voir que les clés publiques de git et heroku ne correspondaient pas.

1) J'ai supprimé tous les fichiers de mon dossier de clés, la clé de github en utilisant leur site web, et la clé de heroku en utilisant git bash et la commande heroku keys:clear

2) Suivre les instructions de github aquí pour générer une nouvelle paire de clés et télécharger la clé publique dans git

3) en utilisant git bash- heroku keys:add pour télécharger la même clé sur heroku.

Maintenant git push heroku master travaux.

Quel cauchemar, j'espère que cela a aidé quelqu'un.

Bryan

17voto

cybo747 Points 382

Le problème que je rencontrais était que j'utilisais uniquement https pour mon compte GitHub. Je devais m'assurer que mon compte GitHub était configuré pour un accès ssh et que GitHub et heroku utilisaient les mêmes clés publiques. Voici les étapes que j'ai suivies :

  1. Naviguez dans le répertoire ~/.ssh et supprimez les fichiers id_rsa et id_rsa.pub s'ils s'y trouvent. J'ai commencé avec de nouvelles clés, bien que cela ne soit peut-être pas nécessaire.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
  2. Suivez les étapes sur gitHub pour générer des clés ssh

  3. Connectez-vous à heroku, créez un nouveau site et ajoutez vos clés publiques :

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master

3voto

Ivan Rave Points 51

Mon chemin sur Windows 8

  1. Ajoutez un répertoire contenant ssh-keygen à la variable PATH du système, généralement C:\Program Fichiers (x86) \Git\bin

  2. Ouvrez CMD, allez dans C:\Users\Me\

  3. Générer une clé SSH ssh-keygen -t rsa

    Entrez le fichier dans lequel vous voulez sauvegarder la clé (//.ssh/id_rsa) : .ssh/id_rsa (changez le chemin incorrect par défaut en .ssh/somegoodname_rsa)

  4. Ajouter la clé à Heroku heroku keys:add

    Sélectionnez une clé créée dans une liste

  5. Allez dans le répertoire de votre application, écrivez un beau code

  6. Créer un dépôt git git init git add . git commit -m 'chore(release): v0.0.1

  7. Créer une application Heroku heroku create

  8. Déployez votre application git push heroku master

  9. Ouvrez votre application heroku open

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X