Heroku ' Permission denied (publickey) fatal: ne pouvait pas lire à partir des malheurs du dépôt à distance

j'ai cherché pendant des heures une solution à mon problème apparemment facile à résoudre. Ce n'est pas que mes recherches n'ont rien révélé, c'est que ma recherche a permis de nombreuses solutions différentes -dont aucun n'a fonctionné.

de toute façon, je ne suis tout simplement pas capable de push, pull, ou fetch de mon dépôt Heroku de mon Mac. Chaque tentative me donne (comme si elle se moquait de moi) l'erreur suivante:

'Permission refusée (publickey). fatal: ne pouvait pas lire à distance référentiel.

j'ai essayé (et ré-essayé) de le corriger de plusieurs façons. Comme je l'ai dit, j'ai passé une bonne partie de ces deux derniers jours à chercher une réponse. Voici quelques-unes des choses que j'ai essayées:

  • heroku clés:claire suivie par heroku clés:ajouter
  • la Régénération d'une clé ssh sur mon propre avec " ssh-keygen -t rsa
  • L'effacement de mon .répertoire ssh, suivi des clés heroku: clear, suivi de la génération d'une clé ssh
  • Supprimer mon application sur heroku et recréer un (heureusement pas beaucoup était là)

je peux obtenir de mon dépôt GitHub amende, donc je sais que ce n'est pas la connectivité réseau (pinging heroku fonctionne également).

comme solution de fortune (qui, je l'espère, ne deviendra pas permanente), je me suis connecté à mon Amazone Ubuntu AWS ec2 instance. Tirer et pousser vers et depuis Heroku fonctionne parfaitement. Pour cette raison, je me sens encore comme si le problème réside avec la clé ssh sur mon Mac. Les deux clés apparaissent sous Mon Compte Heroku. L'adresse email à la fin de la matière principale?

EDIT: je peux pousser et tirer à partir de GitHub fine (je ne suis pas en utilisant ssh, cependant), alors pourquoi ne pas Heroku?

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

134
demandé sur thebradbain 2013-07-13 08:21:53

14 réponses

je sais que cela a déjà été répondu. Mais je voudrais ajouter ma solution car elle peut en aider d'autres dans le futur..

une erreur-clé courante est: Permission denied (publickey) . Vous pouvez corriger cela en utilisant keys:add pour aviser Heroku de votre nouvelle clé.

en bref, suivez ces étapes: https://devcenter.heroku.com/articles/keys

d'Abord, vous devez créer une clé si vous n'en avez pas:

ssh-keygen -t rsa

Deuxièmement, vous devez ajouter la clé à Heroku:

heroku keys:add
269
répondu Kris Hollenbeck 2015-07-09 13:20:27

j'ai juste pensé partager que j'ai trouvé la réponse à ma propre question.

L'écriture de mon problème m'a rendu encore plus clair, et j'ai examiné plus en détail où je pensais que mon problème se trouvait: la clé ssh

S'avère que j'avais raison. Le problème n'était pas avec la clé elle-même, mais plutôt que je n'avais pas ajouté à mon Mac liste des clés ssh. Donc, même si mon compte Heroku avait la bonne clé téléchargée, mon Mac ne pouvait pas authentifier avec ça parce qu'il n'a pas pu trouver cette clé 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 crédit à https://help.github.com/articles/error-permission-denied-publickey pour être une bonne référence.

121
répondu thebradbain 2013-07-13 15:46:49

j'ai eu la même erreur (sur windows 7) et la cause était différente. Je l'ai résolu d'une manière différente donc j'ai pensé que je voudrais ajouter la cause et la solution ici pour les autres.

même si l'erreur semblait indiquer à heroku vraiment l'erreur disait "Heroku can't get to the git repository" . J'ai juré que j'avais les mêmes clés sur tous les serveurs parce que je l'ai créé et téléchargé l'un après l'autre en même temps.

après avoir passé presque une journée sur ce I j'ai réalisé ça parce que git ne me montrait que l'empreinte digitale et pas la vraie clé. Je n'ai pas pu vérifier que la clé correspondait à celle de mon HD ou heroku. J'ai regardé dans le fichier d'hôtes connus et devinez quoi... il montre les clés de chaque serveur et j'ai pu voir clairement que les clés publiques Git et heroku ne correspondaient pas.

1) j'ai supprimé tous les fichiers de mon dossier clé, 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) a suivi les instructions de github ici pour générer une nouvelle paire de clés et télécharger la clé publique de git

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

Maintenant git push heroku master .

quel cauchemar, j'espère que ça a aidé quelqu'un.

Bryan

31
répondu Bryan Myers 2014-02-21 02:34:16

le problème que j'avais, c'est que je n'utilisais https que pour mon compte GitHub. Je devais m'assurer que mon compte GitHub était configuré pour l'accès ssh et que GitHub et heroku utilisaient les mêmes clés publiques. Voici les mesures que j'ai prises:

  1. Naviguer vers le ~/.ssh répertoire et supprimer les id_rsa et id_rsa.pub s'ils sont là. J'ai commencé avec de nouvelles clés, même si ce n'est pas nécessaire.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. suivre les étapes sur gitHub à 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
    
17
répondu sjking 2013-10-22 20:09:26

j'ai eu le même cas sur Linux ubuntu et je l'ai juste corrigé, il semble que OS était confondu entre le /root/.ssh/ et home/utilisateur/.SSH / dir, ce que j'ai fait était:

  1. a supprimé toutes les clés de root et home/user .shh répertoire.
  2. a généré une nouvelle clé assurez-vous de prêter attention au chemin de la création (/accueil/vous/.ssh / id_rsa) ou (/root/.ssh / id_rsa)
  3. vérifier heroku touches heroku keys
  4. si les clés en il y a clairement des heroku keys:clear
  5. heroku keys:add maintenant ici si heroku ne pouvait pas trouver une clé et a demandé de générer un droit non, et cela signifie que vous avez le même problème que le mien, faire la commande add comme ceci heroku keys:add /root/.ssh/id_rsa.pub le chemin que vous allez ajouter sera celui que vous avez obtenu à l'étape 2.
  6. essayer git push heroku master maintenant
5
répondu oqx 2014-08-07 03:58:36

à Ma façon sur Windows 8

  1. Ajouter un répertoire avec ssh-keygen à la variable system PATH, habituellement C:\Program Files (x86)\Git\bin

  2. Ouvrir CMD, aller à C:\Users\Me\

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

    Entrez le fichier dans lequel enregistrer la clé (//.ssh / id_rsa):.SSH / id_rsa (modifier un chemin incorrect par défaut pour .SSH / somegoodname_rsa)

  4. ajouter la clé de Heroku heroku keys:add

    sélectionnez une clé créée à partir d'une liste

  5. allez dans votre répertoire app, écrivez un beau code

  6. Init un repo git git init git add . git commit -m 'chore(release): v0.0.1

  7. créer Demande d'Heroku heroku create

  8. déployez votre application git push heroku master

  9. ouvrez votre application heroku open

3
répondu Ivan Rave 2014-05-07 20:41:04

avait un problème similaire, et a essayé beaucoup de choses. Finalement, ce qui a fonctionné pour moi, C'est que Gnu soit installé sur Windows ( https://github.com/bmatzelle/gow/releases ), et s'assurer qu'il utilisait l'outil ssh à l'intérieur de ce répertoire et non celui avec Git. Une fois installé test avec (s'assurer que son dans votre chemin d'environnement qu'il précède Git\bin)

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

j'ai utilisé du mastic et du concours de beauté comme décrit ici: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant /

une fois que les clés ont été envoyées à heroku (heroku clés:ajouter c:\Users\Person.SSH \ id_rsa.pub), utiliser

ssh -v <username>@heroku.com 

et s'assurer que votre pile montre l'utilisation de Putty - ie une pile de travail:

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

celui qui fonctionnait précédemment et qui a échoué:

C:\Git\htest2>ssh -v <username>@gmail.com@heroku.com
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
répondu user3484361 2014-04-01 09:28:16

vous devez créer une nouvelle clé ssh en tapant ce qui suit: - ssh-keygen-t rsa

alors vous devez ajouter: - les clés heroku: ajouter

alors si vous tapez - heroku ouvrir

Le problème a été résolu.

ça a marché pour moi de toute façon, tu pourrais essayer...

2
répondu nabin 2014-07-19 20:43:51

j'ai eu la même erreur, et parce que j'ai 4 touches ssh, donc j'ai essayé de suivre:

ssh-keygen -t rsa
heroku keys:add

puis, quatre options montrent:

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

je choisis 3), le plus récent

alors, je répare l'erreur.

2
répondu rocLv 2014-11-23 09:34:56

j'utilise cette méthode pour résoudre ce problème Peut-être que vous pouvez l'essayer

"Activer le ssh-agent"

  1. Télécharger git

http://git-scm.com/

  1. Installer

  2. Activer ssh-agent

C:\Program Files\Git\cmd

start-ssh-agent

le message disparaît après que j'ai activé l'agent J'espère que cela vous aidera

1
répondu 徐啟倫 2014-07-11 11:26:12

j'aimerais ajouter une autre solution puisque je ne l'ai pas vu ici. Mon problème était que heroku était lié à la mauvaise url (puisque je continuais à jouer avec les noms d'url). Éditer l'url à distance a résolu mon problème:

git remote set-url heroku <heroku-url-here>
1
répondu ytv 2016-06-13 16:35:09

j'ai eu le même problème. Et j'ai essayé de réinitialiser mes clés comme tout le monde le disait, Mais ça n'a pas marché. Car c'est parce que j'ai renommé l'application.

donc ce que j'ai fait était de réinitialiser mes clés et aussi renommer app à partir de la console. Cochez cette question pour plus d'informations: push Heroku app problème

0
répondu Alin Ciocan 2014-05-08 18:51:32

ALORS, la solution la plus simple , aller à c:/Users/user_name/.SSH / et supprimer toutes les paires de clés pub / privé, de cette façon heroku va générer des clés pour vous.

0
répondu 00imvj00 2014-07-25 14:48:52

j'ai eu une erreur heroku ssh similaire que je n'ai pas pu résoudre.

comme solution de contournement, j'ai utilisé la nouvelle fonctionnalité http-git heroku (transport http pour" heroku " remote au lieu de ssh). Plus de détails ici: https://devcenter.heroku.com/articles/http-git

(version courte: si vous avez un projet déjà configuré la manière standard, exécutez heroku git:remote --http-init pour changer" heroku " remote en http.)

A bon travail rapide autour si vous n'avez pas le temps de corriger/dépanner un ssh question.

0
répondu FullTimeCoderPartTimeSysAdmin 2014-11-12 00:11:10