856 votes

Permission denied (publickey) lors du déploiement d'heroku code. fatal: L'extrémité distante accroché de façon inattendue

Je suis d'essayer de déployer mon code pour heroku avec la ligne de commande suivante:

git push heroku master

mais obtiens l'erreur suivante:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

J'ai déjà téléchargé ma clé SSH publique, mais il vient toujours avec cette erreur.

1483voto

sebarmeli Points 11831

Vous devez télécharger votre clé publique sur Heroku:

heroku keys:add ~/.ssh/id_rsa.pub

Si vous ne disposez pas d'une clé publique, Heroku vous invite à ajouter automatiquement un qui fonctionne parfaitement. Utilisez simplement:

heroku keys:add

Pour supprimer toutes les clés précédentes n' :

heroku keys:clear

Pour afficher toutes les touches de faire :

heroku keys

EDIT:

Le ci-dessus ne semble pas fonctionner pour moi. J'avais foiré autour avec l' HOME variable d'environnement et donc SSH était à la recherche pour les clés dans le mauvais répertoire.

Pour s'assurer que SSH recherche la clé dans le bon répertoire de faire :

ssh -vT git@heroku.com

Qui sera le suivant ( Exemple ) lignes de

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/Wrong/Directory/.ssh/identity type -1
debug1: identity file /c/Wrong/Directory/.ssh/id_rsa type -1
debug1: identity file /c/Wrong/Directory/.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/Wrong/Directory/.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/Wrong/Directory/.ssh/identity
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_rsa
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_dsa
debug1: No more authentication methods to try.

Permission denied (publickey).

À partir de ci-dessus vous avez pu observer que ssh cherche les clés dans l' /c/Wrong/Directory/.ssh répertoire qui n'est pas là où nous avons les clés publiques que nous venons d'ajouter à heroku ( à l'aide d' heroku keys:add ~/.ssh/id_rsa.pub ) ( Veuillez noter que dans l'OS de windows ~ se réfère à l' HOME chemin qui win 7 / 8 C:\Users\UserName )

À la vue de votre domicile actuel de l'annuaire : echo $HOME ou echo %HOME% ( Windows )

Pour définir votre HOME annuaire correctement ( par correctement, je veux dire le répertoire parent de l' .ssh répertoire, de sorte que ssh pourrait chercher les clés dans le bon répertoire ), consultez ces liens :

  1. DONC Réponse sur comment définir la variable d'environnement Unix de façon permanente

  2. DONC, la Question concernant ssh à la recherche pour les clés dans le mauvais répertoire et une solution pour le même.

148voto

Onur Turhan Points 950

J'ai eu le même problème, les étapes ci-dessous a fonctionné pour moi,

->heroku login

abc@gmail.com et le mot de passe

->cd C:\Users\yourusername\.ssh    (OR for cygwin shell ->cd ~/.ssh)

->ssh-keygen -t rsa -f id_rsa

si la demande de passphrase n'utilisez pas de vide, remplissez avec un mot de passe,mais pas l'oublier.

Après la génération de la clé que vous avez besoin de l'ajouter, comme

$ ssh-add

et à heroku

->heroku keys:add "id_rsa.pub"

modifiez le répertoire de l'espace de travail, que

->git clone git@heroku.com:stark-dawn-1234.git -o heroku

utiliser le mot de passe que vous avez défini ci-dessus.


En fait j'ai aussi supprimer les fichiers ci-dessous, mais vous ne savez pas qui ils sont imp,

C:\Users\yourusername.heroku\credientals et C:\Users\yourusername.ssh\known_hosts

92voto

jkpham Points 431

Ce problème a été de jouer avec moi pendant quelques jours.

Cela pourrait aider.

1) Trouver les touches sur lesquelles vous avez dans Heroku maintenant.

$ heroku keys
=== 1 key for joe@example.com
ssh-dss AAAAB8NzaC...DVj3R4Ww== joe@workstation.local

2) Construire un ~/.ssh/config fichier:

$ sudo vim ~/.ssh/config

Modifier avec cette info

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss # location and name of your private key
TCPKeepAlive yes 
User joe@workstation.local

61voto

Lithium Points 1079

Voici le lien qui explique comment gérer vos clés ssh : http://devcenter.heroku.com/articles/keys#adding_keys_to_heroku

36voto

J'ai eu le même problème car je n'avait pas de clés publiques, j'ai donc fait:

heroku keys:clear
heroku keys:add

Que va générer une clé publique, puis il fonctionne bien

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