web-dev-qa-db-fra.com

Autorisation refusée (publickey) lors du déploiement du code heroku. fatal: l'extrémité distante a raccroché de manière inattendue

J'essaie de déployer mon code sur 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é publique SSH, mais l'erreur persiste.

844
vich

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

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

Si vous n'avez pas de clé publique, Heroku vous invitera à en ajouter une automatiquement, qui fonctionnera de manière transparente. Il suffit d'utiliser:

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 n'a pas semblé fonctionner pour moi. J'avais bricolé avec la variable d'environnement HOME et SSH cherchait donc 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 [email protected]

Qui affichera les lignes suivantes (exemple)

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

Dans ce qui précède, vous pouvez constater que ssh cherche les clés dans le répertoire /c/Wrong/Directory/.ssh, qui ne contient pas les clés publiques que nous venons d’ajouter à heroku (en utilisant heroku keys:add ~/.ssh/id_rsa.pub) (. Notez que dans Windows Le système d'exploitation ~ fait référence au chemin HOME qui, sous Windows 7/8, est C:\Users\UserName)

Pour afficher votre répertoire personnel actuel, procédez comme suit: echo $HOME ou echo %HOME% (Windows)

Pour définir correctement votre répertoire HOME (par correctement, je veux dire le répertoire parent du répertoire .ssh, de sorte que ssh puisse rechercher des clés dans le bon répertoire), reportez-vous aux liens suivants:

  1. Réponse du SO sur la définition permanente de la variable d’environnement Unix

  2. SO Question concernant ssh recherchant des clés dans le mauvais répertoire et une solution pour le même.

1463
sebarmeli

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

->heroku login

[email protected] 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, n'utilisez pas de blanc, 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

$ ssh-add

et ça à heroku

->heroku keys:add "id_rsa.pub"

changer de répertoire en espace de travail,

->git clone [email protected]:stark-dawn-1234.git -o heroku

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


En fait, je supprime aussi les fichiers ci-dessous, mais je ne suis pas sûr qu'ils soient imp,

C:\Utilisateurs\votre nom d'utilisateur.heroku\credientals et C:\Utilisateurs\votre nom d'utilisateur.ssh\known_hosts

144
Onur Turhan

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

Cela pourrait aider.

1) Découvrez quelles sont les clés que vous avez dans Heroku maintenant.

$ heroku keys
=== 1 key for [email protected]
ssh-dss AAAAB8NzaC...DVj3R4Ww== [email protected]

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

$ Sudo vim ~/.ssh/config

Modifier avec cette information

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss # location and name of your private key
TCPKeepAlive yes 
User [email protected]
90
jkpham

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

61
Lithium

J'ai eu le même problème parce que je n'avais pas de clé publique, donc je l'ai fait:

heroku keys:clear
heroku keys:add

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

33
Stefan Manastirliu

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

J'utilise Windows 7 64 bits + Git-1.7.7.1-preview20111027 et la solution consistait à copier mes clés de C:\users\user\.ssh dans C:\Program Files (x86)\Git\.ssh. C’est là que ce client git cherche les clés lorsqu’il appuie sur heroku.

J'espère que ça aide.

31
Leo

C'était la solution pour moi:

ssh-add ~/.ssh/my_heroku_key_rsa
29
Gabor

Pour partager mon expérience:

Git (ma propre installation) cherchait la clé nommée 'id_rsa'.

Alors j'ai essayé de renommer mes clés en 'id_rsa' et 'id_rsa.pub' et cela a fonctionné.

Au fait, je suis sûr qu'il y a une autre façon de le faire mais je n'ai pas encore cherché plus loin.

15
Maxence

Si vous avez déjà téléchargé la clé, essayez de l'enlever puis de la télécharger à nouveau 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

ça devrait marcher.

11

Je me suis tué pendant 3 jours en essayant toutes les combinaisons possibles pour que cela fonctionne. J'ai finalement essayé de créer une clé DSA 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
Sauce McBoss

Sous Windows 7,64 bits, la solution ci-dessus (Onur Turhan) a fonctionné pour moi avec de légères modifications, comme indiqué ci-dessous.

C:\Users\MyName > heroku login

Entrez email/mot de passe

C:\Users\MyName >ssh-keygen -t rsa -f id_rsa

Cela a généré deux fichiers (id_rsa et id_rsa.pub) dans mon répertoire c:\Users\MyName (pas dans le répertoire .ssh).

heroku keys:add id_rsa.pub
git clone [email protected]:some-heiku-xxxx.git -o heroku

J'imagine que l'ajout du fichier "id_rsa.pub" correct est le plus important. Après avoir généré la clé publique à l'aide de keygen, vérifiez que vous ajoutez la clé correcte en consultant l'horodatage lors de sa création.

6
Hrushikesh

J'ai eu ce problème lorsque TortoiseGIT a été installé sur ma machine. Après avoir modifié la variable d'environnement GIT_SSH de

"c:\Program Files\TortoiseGit\bin\TortoisePlink.exe"

à

"c:\Program Files (x86)\Git\bin\ssh.exe"

et en suivant ce tutoriel avec ssh-keygen et keys:add, ça marche!

5
zooli

Une seule commande fonctionne:

heroku keys:add

Il en fera un s'il n'existe pas.

5
Travis Reeder

Pousser travaillait pour moi puis s’arrêtait brusquement.

Si l'api heroku connaît des temps d'arrêt, vous obtiendrez cette erreur lorsque vous essayez de pousser.

Vérifier:

https://status.heroku.com/

avant de paniquer trop fort.

4
Tronathan

Séquence à suivre

$ heroku login
$ ssh-keygen -t rsa
$ heroku keys:add

Lors de l'exécution de la deuxième instruction, une entrée sera demandée. Appuyez trois fois sur Entrée (Entrée) et une clé sera ajoutée.

3
Saurabh Rana

La réponse donnée ci-dessus fonctionne, mais a révélé que je devais faire quelques étapes supplémentaires avant que cela fonctionne.

  1. J'ai supprimé tous les fichiers id_rsa * et généré un nouveau SSH en utilisant this guide.
  2. Ensuite, j'ai détruit l'application Heroku. Suppression du fichier ~/.heroku/credentials.
  3. Commande 'heroku create' (et puisque le fichier d’identifiants est supprimé, il vous demandera votre email/mot de passe.
  4. FINALEMENT tapez 'heroku keys: add' et le fichier par défaut ~/.ssh/id_rsa.pub sera chargé.
  5. Ça marche! Eh bien ... YMMV mais j'espère vraiment que cela pourra vous aider, car j'ai eu du mal toute la journée à essayer de comprendre cela! Haha
2
KoalaD

Pour tous ceux qui ont essayé tout ce qui est mentionné ci-dessus sous Windows 7 et qui n'a toujours pas fonctionné, voici ce que j'ai fait: - ouvrez GitBash.exe à partir du répertoire Git C:\Program Files (x86)\Git\(don ' t ouvrir une invite de commande, cela ne fonctionnera pas). - ajoutez ce qui suit comme mentionné ci-dessus , mais vous devez supprimer le #

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss
TCPKeepAlive yes 
User [email protected]

maintenant, lancez git Appuyez sur heroku master et cela devrait fonctionner.

2
Aymen Mouelhi

Vérifiez votre configuration .ssh pour heroku. Allez dans le dossier .ssh et ouvrez le fichier de configuration

cd ~/.ssh
subl config

Le 'subl' est pour Sublime Text, mais vous pouvez utiliser l'éditeur que vous voulez. Recherchez la ligne "IdentityFile" et assurez-vous que la clé non publique est répertoriée:

IdentityFile "/Users/ircmullaney/.ssh/my_ssh"

ne pas

IdentityFile "/Users/ircmullaney/.ssh/my_ssh.pub"

Cela l'a fait pour moi. Je ne sais pas pourquoi la mienne contenait la version publique dans le fichier de configuration, mais c'est ce qui est arrivé et l'erreur a été jetée:

Permissions 0644 for '/Users/ircmullaney/.ssh/my_ssh.pub' are too open.
1
Kevin K

Il semble que votre fichier ~/.ssh/authorized_keys ne soit pas configuré correctement. Vérifier que:

  • C'est dans le bon chemin.
  • Les autorisations du fichier sont 0600.
  • Les autorisations de ~/.ssh sont 0700.
1
cdhowie

J'avais toujours des problèmes après avoir essayé toutes ces idées. C'était mon problème:

Mon référentiel heroku distant était amusé. Je l'ai rafraîchi comme suit:

git remote -v

Ensuite, supprimez le heroku qui est faux:

git remote rm heroku

Ajoutez ensuite le nouveau

git remote add heroku [email protected]:sitename.git

Vous pouvez obtenir le nom du site à partir de votre page de paramètres Heroku pour votre application. Bonne chance!

1
thatdankent

Je rencontrais le même problème; suivre ces étapes devrait aider:

  1. Tout d'abord, connectez-vous: login heroku
  2. Effacer toutes les clés: clés heroku: effacer
  3. Supprimez tous les fichiers du dossier local (tous les fichiers .pub et know_Host) dans .ssh/ folder
  4. Reconnectez-vous à nouveau: login heroku - vous verrez l'invite sans clé, alors suivez les instructions à l'écran.
1
Novpiar Effendi

Je devais faire:

$ ssh-keygen -t rsa  
$ heroku keys:add  

Ensuite cela a fonctionné:

$ git Push heroku master  
1
ericj

Le problème que j'ai rencontré était sur Windows et invariablement chaque fois que je lance les "clés heroku: add", il sélectionne les clés github. Alors voici les étapes que j'ai suivies pour résoudre le problème

  1. est allé dans le répertoire .ssh sous le dossier "Document and Settings" et a supprimé les clés du hub git
  2. lancez la commande heroku keys: add

La commande ci-dessus m'a demandé de générer une nouvelle clé et voici la sortie Impossible de trouver une clé publique existante. Voulez-vous en générer un? [Yn] Y Génération d'une nouvelle clé publique SSH. Téléchargement de la clé publique SSH C:/Documents and Settings/Admin/.ssh/id_rsa.pub ... done! La gemme 'heroku' est obsolète et remplacée par Heroku Toolbelt. Téléchargez et installez à partir de https://toolbelt.heroku.com .

  1. réexécutez la commande heroku keys: add

La commande ci-dessus ne donnera pas la sortie suivante: clé publique existante trouvée: C:/Documents and Settings/Admin/.ssh/id_rsa.pub Chargement de la clé publique SSH C:/Documents and Settings/Admin/.ssh/id_rsa.pub .. . terminé

  1. Maintenant, utilisez le maître git Push heroku

pour moi, les étapes ci-dessus ont permis de résoudre le problème et de déployer l'application sur le cloud.

1
Ashok

J'ai ce problème aussi. J'utilise Mac OSX. La façon dont j'ai corrigé était de me connecter en tant qu'administrateur

Sudo su

mot de passe

0
Jake Lin

Essayez de réparer les autorisations dans Utilitaire de disque (Mac OS X). M'a aidé

0
Ildar

Solution de dmajkic aide-moi enfin:

Pour les utilisateurs de Windows, cela peut signifier: le client git ne peut pas trouver vos clés. Vérifiez les clés dans c:\Users\UserName.ssh\et! variable d'environnement HOME = c:\Users\UserName \

0
GKislin

Si les autres réponses n'ont pas fonctionné pour vous. Essayez ceci!

Parfois, tout ce dont vous avez besoin est de pousser à nouveau. Cela m’arrive aujourd’hui à cause d’une connexion Internet lente (lorsque vous téléchargez ou utilisez p2p).

Veuillez voir la capture d'écran ci-dessous:

enter image description here

0
Adrian Enriquez

Voici ce qui a fonctionné pour moi. Le site heroku n'est pas ajouté à vos hôtes connus. Accédez aux référentiels window-other-show view-git-git. À partir de là, clonez le référentiel. Une fois que vous l'avez cloné, supprimez le référentiel qui vient d'être créé, puis importez-le à partir du menu Fichier. Faites cela depuis que vous clonez le référentiel, il ne l'ajoute pas à la vue Explorateur. Vous devriez maintenant avoir le référentiel git et la vue de l'explorateur.

0
James Murgolo

Si vous voulez utiliser "Sudo", par exemple:

Sudo git clone [email protected]......... -o heroku

vous devriez également générer la clé ssh pour votre utilisateur root.

Sudo su
cd /root/.ssh  
ssh-keygen -t rsa
....
heroku keys:add id_rsa.pub

et ça va marcher.

si vous n'utilisez pas l'utilisateur root, générez la clé ssh dans votre répertoire utilisateur.

cd /home/user/.ssh

Désolé si mes phrases se sont égarées ...

0
Kiddo

J'ai réinstallé heroku toolbelt et cela a fonctionné.

0
Alexis

Au lieu de traiter avec des clés SSH, vous pouvez également essayer le nouveau support --- beta HTTP Git de Heroku. Il utilise simplement votre jeton API et fonctionne sur le port 443, donc pas de clé SSH ou le port 22 à manipuler.

Pour utiliser HTTP Git, assurez-vous d'abord que Toolbelt est mis à jour et que vos informations d'identification sont actuelles:

$ heroku update
$ heroku login

(Ceci est important car Heroku HTTP Git s'authentifie d'une manière légèrement différente de celle du reste de Toolbelt)

Pendant la version bêta, vous obtenez HTTP en transmettant l'indicateur --http-git aux commandes heroku apps:create, heroku git:clone et heroku git:remote correspondantes. Pour créer une nouvelle application et la configurer avec une télécommande HTTP Git, lancez ceci:

$ heroku apps:create --http-git

Pour modifier une application existante de SSH à HTTP Git, exécutez simplement cette commande à partir du répertoire de l'application sur votre ordinateur:

$ heroku git:remote --http-git
Git remote heroku updated

Consultez la documentation Centre de développement pour plus de détails sur la configuration de HTTP Git pour Herok .

0
ryanbrainard

en poussant en utilisant

git Push heroku production:master 

votre clé publique sous le répertoire personnel ~/.ssh/id_rsa est utilisée

Pour résoudre ce problème

vous devez vous connecter car un utilisateur différent peut être root

Sudo su 

puis commencez à neuf en lançant les commandes suivantes

heroku keys:clear //removes existing keys
ssh-keygen -t rsa //generates a new key in ~/.ssh folder (set a password)
heroku keys:add   //uploads the new key, ~/.ssh/id_rsa is uploaded                      
git Push heroku production:master
0
HimalayanCoder

Au début, assurez-vous que les fichiers cachés sont visibles sur votre Mac. Si non faire:

  • Ouvrez le terminal et tapez defaults write com.Apple.Finder AppleShowAllFiles TRUE
  • killall Finder

Prochaines étapes:

  • Aller à Users/user_name/.ssh/ a supprimé tous les fichiers.
  • Type de terminal d'ouverture dans ssh-keygen -t dsa
  • Alors heroku keys:add ~/.ssh/id_dsa.pub

N.B. Je l'ai fait dans Mac OSX 10.7.2 Lion. Bien que la procédure devrait être la même chez les autres aussi.

0
Munim Dibosh

Je voudrais juste ajouter que le répertoire n'est pas nécessairement C:\Utilisateurs\[nom d'utilisateur] \. Ssh. C'est le répertoire dans lequel vous avez créé votre clé publique.

Par exemple, mon répertoire personnel sous Windows a été remplacé par C:\[nom d'utilisateur]. Votre répertoire personnel dans un sous-dossier .ssh est le meilleur et le plus probable endroit où vous avez créé vos clés. Vous pouvez vérifier votre répertoire personnel sous Windows avec la commande:

    echo %HOMEPATH%
0
Nicholas