2012-08-30 121 views
85

请原谅一些挫折,我会尽量保持检查,因为Heroku使用SO作为他们的客户支持(我认为它至少可以说是次充好)。git push heroku master权限被拒绝(publickey)。致命的:远程端意外挂断

在过去的五个小时里,我一直在试图让应用程序发布,但总是出现一些错误的关键。我已经阅读了数十篇文章,并在小费后尝试了小费,试图找出Heroku在愚蠢,完全不透明的过程中所处的位置。

我的用例并不困难:我为我的heroku应用程序创建了一个新的密钥对。我已经设置关键是我的钥匙:

> heroku keys 
    === [email protected] Keys 
    ssh-rsa AAAAB3NzaC...avOqfA7ZBd [email protected] 

我可以登录并“创造”的应用程序(愚蠢的名字,因为它似乎是创建一个混帐回购协议,没有任何形式的应用程序),没有问题。但 *吓坏* 时间我试图把我的应用程序,我得到:

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

我有没有洞察到WTF是怎么回事吧;我只是用一种无法追求的方式将我的头撞在键盘上,但希望Google的全能上帝能够回答它。谷歌并没有回答(好吧,让我回过头来看,我已经看到了十几种方法来回答这个问题)。

对于一个应该很容易的系统来说,这是一个笑话。我喜欢Heroku的想法,但是在拿了五个我们得到绝对没有完成,我想也许这是错误的选择。

+7

我会让你知道,客户的支持,我们提供的Heroku是一流以次充好。 –

+1

我从未做过任何事情,但对SO的答案质量印象深刻。我认为,无论技术如何,为产品提供客户支持都是一种蹩脚的方式。如果我必须提供个人帐户详情,会发生什么情况?不完全是我想要与世界分享的东西(正如我在意识到需要修改原始帖子时)。 –

+0

您确实看到[此问题](http://stackoverflow.com/q/3617113/62576)?尤其是关于使用git注册公钥的部分? –

回答

2

我遇到了同样的问题,这是我理论来是怎么回事:

我很久以前注册了Heroku的,给他们我的github公共密钥。当尝试通常的git push heroku master时,它会去寻找我的私钥,在~/.ssh/github_rsa找到。然后,它会随着您发布的消息悄悄失败。

不过,我后来又尝试过ssh到另一台服务器使用-i标志指定我的“身份档案”(即私有密钥),它提示我输入密码我的私人密钥。在“解锁”私钥后,git push heroku master命令可以工作。一些结论:

  • 虽然ssh会提示你输入密码的身份文件,git不会。
  • 如果您使用其他方法(如ssh)解锁身份文件,它将保持解锁状态,以便您的git使用。
  • 似乎没有任何有关如何永久删除身份文件上的密码保护的文档,其中包括常见的unix命令keytool
  • 创建新的公钥/私钥对的上述解决方案似乎是解决此密码问题的一种解决方法,但不知道问题所在。
+0

我认为你对无声错误是正确的。所以加重... –

148

有多种各地的网络解决方案。我会尽力将可用的选项压缩到一篇文章中。请在每一步之后再次尝试连接。

  • 第1步:尝试将你的公钥的Heroku

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys 
    
  • 第2步:生成一组新的SSH密钥,然后尝试的第一步再次

    https://help.github.com/articles/generating-ssh-keys

  • 步骤3:验证和/或修改您的配置文件

    ​​
  • 第4步:从git中删除heroku remote,重新创建连接,通过heroku添加远程创建只会是新存储库的一个选项。一定要删除旧回购您最初试图创建

    $ git remote rm heroku 
    $ heroku create 
    
  • 5步:重新安装Heroku的工具包

+10

第1步为我做了诡计! (然而,在我将它们推到Heroku之前,我的机器和Github已经重新创建了我的SSH密钥。)谢谢! – ATSiem

+0

第1步工作..谢谢很多! –

+1

没有这个工作对我来说,尽管非常仔细地从干净的安装和一切从顶端两次。最后,所有工作都是为了确保我的GitHub键和Heroku键是一样的。我甚至不明白为什么会有所作为,除非我没有注意到Heroku依赖GitHub,但它以某种方式解决了问题。可以在GitHub上的帐户设置中更改密钥。我想你应该在你的答案中加入这个。 – Aerovistae

13

你的关键的Heroku和github上的键不同步。

  • 确定要使用(建议创建一个新的即 heroku_rsa)的关键。

  • 将密钥添加到github。

  • 添加相同关键的Heroku使用:heroku keys:add

+4

我*真的,真的,真的*希望我在四小时前阅读过这个答案。尽管我认为我在这方面学到了很多东西,但并非全部都不好。 – Aerovistae

+0

我有两个不同的Heroku账户(一个使用我的工作电子邮件,工作项目,另一个使用我的私人电子邮件,用于自由项目)。 Heroku不会让我对两者都使用相同的密钥。那么我怎样才能使用我的Github密钥呢? (为什么Heroku明确需要使用我的Github密钥?Heroku与Github有什么关系?如果我没有使用Github,会怎么样?)我很困惑 – callum

+0

工作就像一个魅力!谢谢! – Shashank

0

如果没有其他的解决方案,为你工作,确保你登录了Linux的shell与帐户和帐户。

这样,如果你用的是不是你的SSH密钥的所有者的用户运行,git会找错了钥匙进行身份验证

1

对我来说,似乎问题是,我有SSH-代理程序在后台运行,并且未添加相关私钥。

ps -afe | grep ssh-agent 

ssh-add ~/.ssh/id_rsa_heroku_github 

我也不得不公开密钥(手动)添加到github上和Heroku的

heroku keys:add ~/.ssh/id_rsa_heroku_github.pub 
相关问题