web-dev-qa-db-fra.com

git Push heroku master Autorisation refusée (publickey). fatal: l'extrémité distante a raccroché de façon inattendue

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.

85
Travis Jensen

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

    https://help.github.com/articles/generating-ssh-keys

  • É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

149
jquintana

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

13
Robert Christian

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:

  • Alors que ssh vous demandera le mot de passe d'un fichier d'identité, git ne le fera pas.
  • Si vous déverrouillez le fichier d'identité avec une autre méthode, comme ssh, il restera déverrouillé pour votre utilisation git.
  • Il ne semble pas y avoir tout documentation sur la façon de supprimer définitivement la protection par mot de passe sur un fichier d'identité, y compris avec la commande unix commune keytool.
  • Les solutions ci-dessus de création d'une nouvelle paire de clés publique/privée semblent être une solution de contournement pour ce problème de mot de passe, sans savoir que c'est le problème.
2
owensmartin
2
Cabbibo

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
1
cobberboy

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

0
Saulo Falcao