Heroku 'Permission refusée (publickey) fatal: impossible de lire à partir des malheurs du référentiel distant

139

J'ai cherché pendant de nombreuses heures à la recherche d'une solution à mon problème apparemment facile à résoudre. Ce n'est pas que ma recherche n'a rien révélé, c'est que ma recherche a révélé tant de solutions différentes - dont aucune n'a fonctionné.

Quoi qu'il en soit, je suis tout simplement incapable de pousser, extraire ou récupérer de mon référentiel Heroku depuis mon Mac. Chaque tentative me donne (comme si elle se moquait de moi) l'erreur suivante:

'Autorisation refusée (publickey). fatal: impossible de lire à partir du référentiel 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:

  • clés heroku: effacer suivi des clés heroku: ajouter
  • Régénérer une clé ssh moi-même avec 'ssh-keygen -t rsa'
  • Effacer mon répertoire .ssh, suivi des clés heroku: effacer, suivi de la génération d'une clé ssh
  • Supprimer mon application sur heroku et en recréer une (heureusement, il n'y avait pas grand-chose)

Je peux aller chercher mon dépôt GitHub très bien, donc je sais que ce n'est pas une connectivité réseau (ping heroku fonctionne également).

En tant que solution improvisée (qui, je l'espère, ne deviendra pas permanente), je me suis connecté à mon instance Ubuntu Amazon AWS ec2. Tirer et pousser vers et depuis Heroku fonctionne parfaitement. Pour cette raison, j'ai toujours l'impression que le problème réside dans la clé ssh de mon Mac. Les deux clés apparaissent sous mon compte Heroku. L'adresse e-mail à la fin de la clé est-elle importante?

EDIT: Je peux pousser et tirer de GitHub bien (je n'utilise pas ssh, cependant), alors pourquoi pas Heroku?

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

thebradbain
la source
Avez-vous défini une phrase secrète pour votre clé heroku? Et je suppose que cela ( stackoverflow.com/a/16753800/6309 ) n'aide pas? Ou
revérifiez
Malheureusement, il refuse toujours de fonctionner.
thebradbain
cela se produit parfois lorsque heroku est en maintenance: status.heroku.com
Mavis

Réponses:

284

Je sais que cela a déjà été répondu. Mais j'aimerais ajouter ma solution car elle peut être utile pour d'autres à l'avenir.

Une erreur clé commune est: Permission denied (publickey). Vous pouvez résoudre ce problème en utilisant keys:addpour informer Heroku de votre nouvelle clé.

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

Vous devez d'abord 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
Kris Hollenbeck
la source
2
Merci kris, quelqu'un du futur :) cela fonctionne pour moi
Ahmad Ajmi
8
clés heroku: ajouter mon tutoriel a manqué je suppose ... merci! :)
Ole Henrik Skogstrøm
La clé ne doit être générée que si vous n'en avez pas déjà une, dans mon cas, j'avais déjà la clé et j'avais juste besoin d'ajouter la clé à heroku
joseramonc
4
Le premier n'est pas nécessaire. heroku keys:addvous aidera à en créer une si vous n'avez pas de clé.
Mygod
Exécuter ssh-keygen -t rsasi le RSAn'est pas généré sinon heroku keys:adddevrait suffire
Volatil3
122

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

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

Il s'avère que j'avais raison. Le problème n'était pas avec la clé elle-même, mais plutôt que je ne l'avais pas ajoutée à la liste des clés ssh connues de mon Mac local. Ainsi, même si mon compte Heroku avait la bonne clé téléchargée, mon Mac n'a pas pu s'authentifier avec elle car il ne pouvait pas 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 tiens à remercier https://help.github.com/articles/error-permission-denied-publickey d'être une bonne référence.

thebradbain
la source
5
Merci pour votre retour, plus fidèle à votre situation que mon commentaire initial. +1
VonC
4
Sur Windows, il faudra démarrer Git Bash(cliquer avec le bouton droit sur un dossier), démarrer un ssh-agentce qui est possible en exécutant `ssh-agent`(attention aux rétrogradations), puis ajouter la clé comme décrit ci-dessus. Je dois le faire à chaque fois que je lance le Git Bash/ ssh-agent, cela oublie ce qui a été ajouté.
TWiStErRob
J'ai fait ça et ça n'a toujours pas fonctionné. J'ai fini par devoir ajouter une variable d'environnement appelée HOME définie dans le répertoire dans lequel se trouvait mon dossier .ssh
Justin
Merci - je n'aurais jamais compris cela!
Mark Hansen
Cela a résolu mon problème, pas la réponse la plus élevée, merci :)
Ryan Brodie
31

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

Même si l'erreur semblait pointer vers heroku, l'erreur disait vraiment "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 les ai créées et téléchargées les unes après les autres en même temps.

Après avoir passé presque une journée là-dessus, j'ai réalisé que parce que git ne me montrait que l'empreinte digitale et non la clé réelle. Je n'ai pas pu vérifier que sa clé correspondait à celle de mon disque dur ou de mon 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 clairement voir que les clés publiques 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) Suivez les instructions de github ici pour générer une nouvelle paire de clés et télécharger la clé publique sur git

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

Fonctionne maintenant git push heroku master.

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

Bryan

Bryan Myers
la source
1
Je me suis creusé la cervelle jusqu'à ce que je voie votre message. Dès que j'ai fait les mêmes clés git et heroku, tout allait bien. Mais je ne comprends pas pourquoi ils doivent être les mêmes.
Kishore Masand
Merci pour la réponse passée des siècles avec ce problème
Ivan Bacher
lien de documentation git très utile, tout fonctionne parfaitement
HotJard
Cela a fonctionné pour moi après quelques jours à essayer de le comprendre. Je suis surpris que Heroku puisse rester en affaires avec un problème d'utilisation aussi désagréable. Il devrait y avoir un moyen plus simple de le faire.
Luke F.
Je vous remercie. A travaillé pour moi; juste une chose: dans le lien github, il est dit quelque part de faire "ssh-add". Là, j'ai eu un problème, mais j'ai trouvé une solution ici: stackoverflow.com/questions/17846529/…
Alin Ciocan
17

Le problème que j'avais est que j'utilisais uniquement https 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 tous les deux les mêmes clés publiques. Voici les étapes que j'ai suivies:

  1. Accédez au répertoire ~ / .ssh et supprimez les id_rsa et id_rsa.pub s'ils s'y trouvent. J'ai commencé avec de nouvelles clés, même si cela n'est 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
    
sjking
la source
6

J'ai eu le même cas sur Linux ubuntu et je viens de le réparer, il semble que le système d'exploitation était confondu entre le /root/.ssh/ et home / user / .ssh / dir, ce que j'ai fait était:

  1. supprimé toutes les clés du répertoire racine et home / user .shh.
  2. généré une nouvelle clé assurez-vous de faire attention au chemin de création (/home/you/.ssh/id_rsa) ou (/root/.ssh/id_rsa)
  3. vérifier les clés heroku heroku keys
  4. si les clés sont claires heroku keys:clear
  5. heroku keys:addmaintenant ici si heroku n'a pas pu trouver une clé et a demandé à en générer une non, et cela signifie que vous avez le même problème que le mien, exécutez la commande add comme celle-ci, heroku keys:add /root/.ssh/id_rsa.puble chemin que vous allez ajouter sera celui que vous avez à l'étape 2.
  6. essayez git push heroku mastermaintenant
oqx
la source
3

Mon chemin sur Windows 8

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

  2. Ouvrez CMD, accédez à 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 (changez un 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. Accédez au répertoire de votre application, écrivez du beau code

  6. Initier 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 appli heroku open

Ivan Rave
la source
2

J'ai eu un problème similaire et j'ai essayé beaucoup de choses. En fin de compte, ce qui a fonctionné pour moi, c'était d'avoir Gnu sur Windows installé ( https://github.com/bmatzelle/gow/releases ) et de m'assurer qu'il utilisait l'outil ssh dans ce répertoire et non celui avec Git. Une fois installé, testez avec (assurez-vous que c'est dans votre environnement PATH 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 pageant 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 les clés envoyées à heroku (clés heroku: ajoutez c: \ Users \ Person.ssh \ id_rsa.pub), utilisez

ssh -v <username>@heroku.com 

et assurez-vous que votre pile montre l'utilisation de Putty - c'est-à-dire 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 auparavant et qui a échoué:

C:\Git\htest2>ssh -v <username>@[email protected]
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).
user3484361
la source
Juste pour dire que cela utilise Windows 8 (8.1). Il semble également que l'outil GoW ssh soit la clé, car j'ai pu l'utiliser sans les morceaux de mastic et utiliser ssh-keygen.
user3484361
2

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

Ensuite, vous devez ajouter: - clés heroku: ajouter

Ensuite, si vous tapez - heroku ouvert

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

Cela a fonctionné pour moi de toute façon, vous pouvez l'essayer ...

nabin
la source
2

J'ai eu la même erreur, et parce que j'ai 4 clés ssh, j'ai donc 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

Ensuite, je corrige l'erreur.

rocLv
la source
1

J'utilise cette méthode pour résoudre ce problème Vous pouvez peut-être l'essayer

"Activer ssh-agent"

  1. Télécharger git

http://git-scm.com/

  1. Installez-le

  2. Activer ssh-agent

C: \ Program Files \ Git \ cmd

start-ssh-agent

Le message disparaît après l'activation de l'agent J'espère que cela vous aidera

徐啟倫
la source
1

J'aimerais ajouter une autre solution puisque je ne l'ai pas vue ici. Mon problème était que heroku était lié à la mauvaise URL (puisque je continuais à jouer avec les noms d'URL). La modification de l'url distante a résolu mon problème:

git remote set-url heroku <heroku-url-here>
ytv
la source
0

J'ai eu le même problème. Et j'ai essayé de réinitialiser mes clés comme tout le monde l'a dit, mais cela ne fonctionnait toujours pas. Car c'était parce que j'ai renommé l'application.

J'ai donc réinitialisé mes clés et renommé l'application à partir de la console. Consultez cette question pour plus d'informations: Problème d'application Heroku push

Alin Ciocan
la source
0

SO So So solution simple, allez à c: /Users/user_name/.ssh/ et supprimez toutes les paires de clés pub / private, de cette façon heroku générera des clés pour vous.

00imvj00
la source
0

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

Pour contourner le problème, j'ai utilisé la nouvelle fonctionnalité heroku http-git (transport http pour "heroku" remote au lieu de ssh). Détails ici: https://devcenter.heroku.com/articles/http-git

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

Une bonne solution rapide si vous n'avez pas le temps de résoudre / dépanner un problème ssh.

FullTimeCoderPartTimeSysAdmin
la source
Dans mon cas, le problème semble être lié à ":" dans les chemins distants ssh. (Git 1.9.4 pour Windows.) Pour une raison quelconque, ssh: // git @ host: repo échoue avec "fatal: Could not read from remote repository" tandis que ssh: // git @ host / repo "réussit.
FullTimeCoderPartTimeSysAdmin