无法将主分支推送到Heroku

7

我无法在Github和Heroku中使用git push,我尝试了这个问题上建议的各种方法。请帮忙解决这个问题...当我尝试推送时,我看到以下报告。

D:\My\weblog>git push heroku master
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

D:\My\weblog>ssh -v git@heroku.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Connecting to heroku.com [50.16.232.130] port 22.
debug1: Connection established.
debug1: identity file /.ssh/identity type -1
debug1: identity file /.ssh/id_rsa type -1
debug1: identity file /.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debia
n-5pgsql1
debug1: match: OpenSSH_5.1p1 Debian-5pgsql1 pat OpenSSH*
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: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /.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: /.ssh/identity
debug1: Trying private key: /.ssh/id_rsa
debug1: Trying private key: /.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

我正在使用Windows 7操作系统。


8个回答

17

在命令行中输入gem install heroku

然后将 Github 的 RSA 密钥上传到 Heroku。

$ heroku keys:add
Uploading ssh public key /Users/adam/.ssh/id_rsa.pub

一旦你使用命令将 Heroku 和 Github 配置好,你的所有代码都会先上传至 Github,然后再传输至 Heroku。

git push heroku master 

不久之后,您将看到这些消息。

-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> Detected Rails is not set to serve static_assets

不确定 gem ...,但是 heroku keys:add 绝对解决了我的问题(已点赞)。 - JJ Zabkar

5

看起来Heroku没有接受您机器的公钥。请确保您已经将您的公钥提供给了Heroku。Heroku关于SSH密钥的指南可以帮助您。


您能否使用公钥SSH到其他服务器? - Andrew Marshall
我是新手,目前无法访问GitHub和Heroku。我尝试在Ubuntu上处理它,但这甚至更糟糕了。Heroku甚至不能在Ubuntu上安装!! - sakthig
尝试在Windows上备份本地密钥并重新启动整个密钥设置过程。您也可以尝试联系Heroku的支持团队。 - Andrew Marshall

2

我在使用heroku-toolbelt/2.32.8时,在OSX上遇到了类似的问题。即使按照heroku的指示操作,我仍然无法成功,直到我使用了默认路径下的密钥 - 即 ~/.ssh/id_rsa.pub。


1
将密钥放置在id_rsa默认空间是我能做的唯一事情,这样才能使它正常工作。谢谢! - Wade Williams

2

这个链接帮助我解决了同样的问题。我使用了Heroku keys命令查看我的密钥,发现我有两个密钥。然后我输入了两次“heroku remove:keys email@email.com” 命令将它们删除 - 然后使用了“heroku add:keys”命令 - 当我尝试推送到Heroku时,它就起作用了。 - Bob Cavezza

1
在Ubuntu中,sudo su对我有帮助。
当我使用ssh生成密钥时,如果您读取"id_rsa.pub"文件的内容,文件末尾会有一个用户名。对我来说,它是"root@pc-name",但是如果没有 sudo su ,当前用户名将变为"username@pc-name"而不是"root@pc-name"。sudo su 通过切换到"root@pc-name"解决了这个问题。

这个解决方案对我很有效。我怀疑更好的做法是使用用户角色生成一个密钥,而不是使用根密钥。 - mpgarate

1

我遇到了同样的问题 - 原来我忘记了 Windows 8 默认不像 Windows 7 一样以管理员权限启动命令提示符。以管理员身份运行解决了我的问题。


0
如果在Windows和Cygwin上使用,我必须以管理员权限启动Cygwin才能将代码推送到Heroku。

0

我曾经遇到过同样的问题。我通过使用Git Bash更改cmd命令来解决它。在Git上完成所有操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接