2017-10-19 42 views
4

"git push heroku" est soudainement défaillant. (J'ai installé Node.js et je pense qu'il a peut-être amélioré certaines choses et l'a cassé en quelque sorte.)Soudain ne peut pas pousser à heroku: "incapable de négocier la méthode d'échange de clés"

J'ai lu tous les messages similaires; ça ne me dit pas quel échange a été 'offert', et tout semble correspondre, mais l'appel échoue et je suis perdu.
J'ai fait heroku auth: se connecter avec succès.

ssh [email protected] -v me donne ce qui suit:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 
debug1: Reading configuration data /Users/jeff/.ssh/config 
debug1: Reading configuration data /etc/ssh_config 
debug1: /etc/ssh_config line 20: Applying options for * <This line is 'Host *'> 
debug1: Connecting to heroku.com [50.19.85.156] port 22. 
debug1: Connection established. 
debug1: identity file /Users/jeff/.ssh/id_rsa type 1 
debug1: identity file /Users/jeff/.ssh/id_rsa-cert type -1 
debug1: identity file /Users/jeff/.ssh/id_dsa type -1 
debug1: identity file /Users/jeff/.ssh/id_dsa-cert type -1 
debug1: Enabling compatibility mode for protocol 2.0 
debug1: Local version string SSH-2.0-OpenSSH_6.2 
debug1: Remote protocol version 2.0, remote software version endosome 
debug1: no match: endosome 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug1: kex: server->client aes128-ctr [email protected] none 
debug1: kex: client->server aes128-ctr [email protected] none 
Unable to negotiate a key exchange method 

Répondre

8

J'ai rencontré le même problème ce matin.

Je peux éviter ce problème, en changeant l'URL distante git comme ci-dessous.

de: [email protected]: app-name.git

à: https://git.heroku.com/app-name.git

vous pouvez utiliser la commande ci-dessous

git remote rm heroku git remote add heroku https://git.heroku.com/app-name.git

+0

Ce fixed it! Tout le monde a probablement raison aussi. Je pense que le problème était que je l'ai fait pointer sur "[email protected]: ", qui fonctionnait. Donc, ma meilleure supposition est que j'avais un ancien SSH qui supportait cette syntaxe, puis la mise à niveau (accidentelle) vers la dernière version l'a cassé. De toute façon cela fonctionne maintenant! – user3407688

0

En premier lieu, revérifier si la heroku à distance est en effet une URL ssh

git remote -v 

Vérifiez ensuite le contenu de C:/Users/jeff/.ssh/config qui devrait avoir une entrée heroku.com , pour obtenir le chemin de la clé privée réelle utilisée.

S'il s'agit d'une URL https, vérifiez votre fichier ~/_netrc, comme dans "Heroku CLI Authentication".
Mais pour ssh, voir Managing Your SSH Keys, et ce heroku keys:add renvoie.

4

je suis tombé sur le même problème ce matin. C'était parce que j'utilisais un client SSH obsolète. Je me doutais que c'était le problème après avoir lu this answer. Sur mon mac j'utilise homebrew donc j'ai pu installer openssh. Pour moi c'était juste: brew install openssh

Puis git push heroku master a réussi.

Je ne suis pas aussi familier avec Linux mais je suppose que vous pouvez utiliser un gestionnaire de paquets comme apt-get.

+0

Droite. C'était la version d'openssh. Mise à jour avec 'brew install openssh' a résolu le problème. –

0

Ils ont récemment désactivé certaines anciennes méthodes d'échange de clés non sécurisées. Comme l'a dit Kalimar, vous utilisez probablement un client ssh obsolète. Si brew install openssh (ou équivalent si vous utilisez autre chose qu'un Mac) ne le répare pas, ou vous ne voulez pas le faire pour une raison quelconque, une autre approche consiste à changer l'URL pour utiliser le transport HTTPS. Le format est le suivant:

https://git.heroku.com/YOUR-APP-NAME.git