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.
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:
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
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]
Voici le lien qui explique comment gérer vos clés ssh: http://devcenter.heroku.com/articles/keys#adding_keys_to_herok
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
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.
C'était la solution pour moi:
ssh-add ~/.ssh/my_heroku_key_rsa
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.
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.
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)
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.
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!
Une seule commande fonctionne:
heroku keys:add
Il en fera un s'il n'existe pas.
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:
avant de paniquer trop fort.
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.
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.
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.
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.
Il semble que votre fichier ~/.ssh/authorized_keys
ne soit pas configuré correctement. Vérifier que:
~/.ssh
sont 0700.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!
Je rencontrais le même problème; suivre ces étapes devrait aider:
.pub
et know_Host
) dans .ssh/ folder
Je devais faire:
$ ssh-keygen -t rsa
$ heroku keys:add
Ensuite cela a fonctionné:
$ git Push heroku master
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
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 .
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é
pour moi, les étapes ci-dessus ont permis de résoudre le problème et de déployer l'application sur le cloud.
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
Essayez de réparer les autorisations dans Utilitaire de disque (Mac OS X). M'a aidé
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 \
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:
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.
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 ...
J'ai réinstallé heroku toolbelt et cela a fonctionné.
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 .
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
Au début, assurez-vous que les fichiers cachés sont visibles sur votre Mac. Si non faire:
defaults write com.Apple.Finder AppleShowAllFiles TRUE
killall Finder
Prochaines étapes:
Users/user_name/.ssh/
a supprimé tous les fichiers.ssh-keygen -t dsa
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.
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%