突然无法推送到heroku:“无法协商密钥交换方法”

时间:2017-10-19 15:54:25

标签: ruby-on-rails git ssl heroku ssh

“git push heroku”突然失败了。 (我安装了Node.js,我认为它可能升级了一些东西并以某种方式破坏了它。)

我已经阅读了所有相似的帖子;它没有告诉我哪个交易所“提供”,而且一切看起来都匹配,但是通话失败了,我不知所措。
我做了heroku auth:登录成功。

ssh git@heroku.com -v给了我以下内容:

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 hmac-sha2-256-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-sha2-256-etm@openssh.com none
Unable to negotiate a key exchange method

4 个答案:

答案 0 :(得分:11)

今天早上我遇到了同样的问题。

我可以通过更改git remote url来避免这个问题。

自: git@heroku.com:APP-name.git

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

你可以使用下面的命令

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

答案 1 :(得分:4)

今天早上我遇到了同样的问题。这是因为我使用的是过时的ssh客户端。我怀疑这是在阅读this answer之后的问题。在我的Mac上我使用homebrew所以我能够安装openssh。对我来说只是: brew install openssh

然后git push heroku master成功。

我对Linux并不熟悉,但我怀疑你可以使用像apt-get这样的包管理器。

答案 2 :(得分:1)

他们最近禁用了一些旧的不安全密钥交换方法。正如Kalimar所说,你可能正在使用一个过时的ssh客户端。如果brew install openssh(或等同于你在Mac以外的其他东西)没有解决它,或者你不想出于任何原因这样做,另一种方法是更改​​URL以使用HTTPS传输。格式为:

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

答案 3 :(得分:0)

首先,仔细检查远程heroku是否确实是一个ssh URL

git remote -v

然后检查应该有C:/Users/jeff/.ssh/config条目的heroku.com的内容,以获取使用的实际私钥路径。

如果是https网址,请检查您的~/_netrc文件,例如&#34; Heroku CLI Authentication&#34;。
但是对于ssh,请参阅Managing Your SSH Keys以及heroku keys:add返回的内容。