web-dev-qa-db-fra.com

Heroku 'permission refusée (publickey) fatal: impossible de lire depuis le dépôt distant les malheurs

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 abouti à rien, c’est que ma recherche a abouti à tant de solutions différentes, dont aucune n’a fonctionné.

Quoi qu'il en soit, je ne peux tout simplement pas pousser, tirer ou récupérer de mon référentiel Heroku à partir de 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 de ces deux derniers jours à chercher une réponse. Voici certaines des choses que j'ai essayées:

  • clés heroku: effacer suivi des touches heroku: ajouter
  • Régénérer moi-même une clé ssh avec 'ssh-keygen -t rsa'
  • 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 en recréer une (heureusement, il n'y en avait pas beaucoup)

Je peux aller chercher très bien dans mon référentiel GitHub, donc je sais que ce n'est pas une connectivité réseau (la commande ping heroku fonctionne également).

En tant que 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. 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. Est-ce que l'adresse de courrier électronique à la fin de la clé est 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!

137
thebradbain

Je pensais juste partager avec vous que j'avais trouvé la réponse à ma propre question.

Ecrire mon problème me le rendit encore plus clair, et j’enquêtai plus avant sur le sens de mon problème: la clé ssh

Il s'avère que j'avais raison. Le problème ne concernait pas la clé elle-même, mais plutôt le fait que je ne l'eusse pas ajouté à la liste des clés ssh connues de mon Mac local. Ainsi, même si la clé correcte a été téléchargée sur mon compte Heroku, mon Mac ne peut pas s’authentifier avec ce compte car il ne peut 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 voudrais donner crédit à https://help.github.com/articles/error-permission-denied-publickey pour être une bonne référence.

122
thebradbain

Je sais que cela a déjà été répondu. Mais je voudrais ajouter ma solution car elle pourrait être utile à d’autres à l’avenir.

Une erreur de clé commune est: Permission denied (publickey). Vous pouvez résoudre ce problème en utilisant keys:add pour 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
278
Kris Hollenbeck

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, en réalité, 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'avais créée et téléchargée l'une après l'autre en même temps.

Après avoir passé presque une journée là-dessus, je me suis rendu compte 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 la clé correspond à celle de ma HD ou de mon heroku. J'ai regardé dans le fichier hosts connu 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 de clés, la clé de github utilisant leur site Web et la clé de heroku 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.

Maintenant, git Push heroku master fonctionne.

quel cauchemar, espérons que cela a aidé quelqu'un.

Bryan

31
Bryan Myers

Le problème que j'avais était que je n'utilisais que 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. Ce sont les étapes que j'ai prises:

  1. Naviguez jusqu'au répertoire ~/.ssh et supprimez les id_rsa et id_rsa.pub s'ils sont présents. 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
    
17
sjking

j'ai eu le même cas sur Linux Ubuntu et juste corrigé, il semble que le système d'exploitation a été confondu entre le/root/.ssh/et home/user/.ssh/dir, ce que j'ai fait était:

  1. supprimé toutes les clés des répertoires root et home/user .shh.
  2. généré une nouvelle clé assurez-vous de faire attention au chemin de la création (/home/you/.ssh/id_rsa) ou (/root/.ssh/id_rsa)
  3. vérifier les clés heroku heroku keys
  4. si les touches y effacent heroku keys:clear
  5. heroku keys:add maintenant si Heroku ne peut pas trouver de clé et demande à en générer un non, et que cela signifie que vous avez le même problème que le mien, effectuez la commande add comme ceci heroku keys:add /root/.ssh/id_rsa.pub le chemin que vous avez choisi. J'ajouterai sera celui que vous avez obtenu à l'étape 2.
  6. essayez git Push heroku master maintenant
6
oqx

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, allez à 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 (remplacez un chemin par défaut incorrect par .ssh/nom_goods_rsa)

  4. Ajouter la clé à Herokheroku keys:add

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

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

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

  7. Créer une application Herokheroku create

  8. Déployez votre application git Push heroku master

  9. Ouvrez votre application heroku open

3
Ivan Rave

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

Ensuite, vous devez ajouter: - Heroku keys: add

Ensuite, si vous tapez - heroku open

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

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

2
nabin

Avait un problème similaire, et essayé beaucoup de choses. En fin de compte, ce qui a fonctionné pour moi a été d’installer Gnu sous Windows ( https://github.com/bmatzelle/gow/releases ) et de s’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 PATH de votre environnement qu’il précède Git\bin)

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

J'ai utilisé PuTTY et 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:\Utilisateurs\Personne.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 qui fonctionne:

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 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).
2
user3484361

J'ai 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.

2
rocLv

J'utilise cette méthode pour résoudre ce problème Peut-être que vous pouvez 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 que j'ai activé l'agent J'espère que cela vous aidera

1
徐啟倫

J'aimerais ajouter une autre solution puisque je ne l'ai pas vue ici. Mon problème était que heroku liait à 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>
1
ytv

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

0
00imvj00

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

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

(Version courte: si un projet est déjà configuré de manière standard, lancez heroku git: remote --http-init pour remplacer "heroku" remote par http.)

Une bonne solution rapide si vous n’avez pas le temps de résoudre/résoudre un problème SSH.

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 cela n'a toujours pas fonctionné. Car c'était parce que j'ai renommé l'application.

Donc, ce que j'ai fait était de réinitialiser mes clés et de renommer l'application depuis la console. Cochez cette question pour plus d’informations: problème d’application Heroku Push

0
Alin Ciocan