Question Autorisation refusée (clé publique) lors du déploiement du code heroku. fatale: L'extrémité distante a raccroché de façon inattendue


Je tente de déployer mon code à heroku avec la ligne de commande suivante:

git push heroku master

mais obtenez 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 arrive toujours avec cette erreur.


832


origine


Réponses:


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

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

Si vous n'avez pas de clé publique, Heroku vous invitera à en ajouter un automatiquement, ce qui fonctionne parfaitement. Utilisez juste:

heroku keys:add

Pour effacer toutes vos clés précédentes, procédez comme suit:

heroku keys:clear

Pour afficher toutes vos clés existantes, procédez comme suit:

heroku keys

MODIFIER:

Ce qui précède ne semble pas fonctionner pour moi. Je me suis amusé avec le HOME variable d'environnement et donc SSH cherchait des clés dans le mauvais répertoire.

Pour vous assurer que SSH vérifie la clé dans le bon répertoire, procédez comme suit:

ssh -vT git@heroku.com

Ce qui affichera les lignes suivantes (échantillon)

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

De ce qui précède, vous pouvez observer que ssh cherche les clés dans le /c/Wrong/Directory/.ssh répertoire qui n'est pas où nous avons les clés publiques que nous venons d'ajouter à heroku (en utilisant heroku keys:add ~/.ssh/id_rsa.pub ) ( S'il vous plaît noter que dans Windows OS ~ se réfère à la HOME chemin qui, dans la victoire 7/8 est C:\Users\UserName )

Pour voir votre répertoire personnel actuel, procédez comme suit: echo $HOME ou echo %HOME% ( Les ​​fenêtres )

Pour définir votre HOME répertoire correctement (par correctement je veux dire le répertoire parent de .ssh répertoire, afin que ssh puisse chercher les clés dans le bon répertoire) référez-vous à ces liens:

  1. SO Répondre à la façon de définir la variable d'environnement Unix en permanence

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


1449



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

->heroku login

abc@gmail.com et mot de passe

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

->ssh-keygen -t rsa -f id_rsa

Si une phrase secrète est demandée, ne l'utilisez pas, remplissez-la avec une phrase secrète, mais ne l'oubliez pas.

Après avoir généré la clé, vous devez l'ajouter, comme si

$ ssh-add

et à heroku

->heroku keys:add "id_rsa.pub"

changer de répertoire en espace de travail,

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

utilisez la phrase secrète que vous avez définie ci-dessus.


En fait, je supprime également les fichiers ci-dessous, mais pas sûr qu'ils sont imp,

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


144



Ce problème me dérangeait pendant quelques jours.

Cela pourrait aider.

1) Découvrez les clés que vous avez à Heroku maintenant.

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

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

$ 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

89



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


62



J'ai eu le même problème parce que je n'avais pas de clés publiques, alors j'ai fait:

heroku keys:clear
heroku keys:add

Cela va générer une clé publique et ça marche bien


34



Si vous êtes un utilisateur Windows, les autres solutions ici ne vont probablement pas résoudre votre problème.

J'utilise Windows 7 64 bits + Git-1.7.7.1-preview20111027 et la solution était de copier mes clés de C:\users\user\.ssh à C:\Program Files (x86)\Git\.ssh. C'est là que ce client git cherche les clés en poussant vers heroku.

J'espère que ça aide.


31



C'était la solution pour moi:

ssh-add ~/.ssh/my_heroku_key_rsa

29



Pour partager mon expérience:

Git (mon propre install) cherchait la clé nommée 'id_rsa'.

J'ai donc essayé de renommer mes clés en 'id_rsa' et 'id_rsa.pub' et ça a marché.

Btw, je suis sûr qu'il y a un autre moyen de le faire mais je n'ai pas regardé encore plus profond.


15



Si vous avez déjà téléchargé la clé, essayez de supprimer la clé, puis réimporter avec une nouvelle clé.

 heroku keys:remove //removes the existing key
 ssh-keygen -t rsa //generates a new key in ~/.ssh folder
 heroku keys:add    //uploads the new key, if no arguments r passed then the key generated                              
                    //in default directroy i.e., ~/.ssh/id_rsa is uploaded
 git push heroku

cela devrait fonctionner.


11



Je me suis tué pendant 3 jours en essayant toutes les combinaisons possibles pour essayer de faire fonctionner ça - j'ai finalement essayé de faire un DSA clé à la place et cela a fonctionné.

Essayez DSA au lieu de RSA si cela ne fonctionne pas pour vous.

(J'utilise Ubuntu 11.10, ruby ​​1.8.7, heroku 2.15.1)


7