git push heroku master权限被拒绝(publickey)。 致命的:远端意外挂断

请原谅一些挫折,我会尽量保持检查,因为Heroku使用SO作为他们的客户支持(我认为这至less可以说是次充好)。

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

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

> heroku keys === travis@xxxx.com Keys ssh-rsa AAAAB3NzaC...avOqfA7ZBd travis@xxxx.com 

我可以login和“创build”一个应用程序(愚蠢的名字,因为它似乎是创build一个GIT回购,而不是任何forms的应用程序)没有问题。 但每一次 * freaking * 时间我试图推动我的应用程序,我得到:

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

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

对于一个应该很容易的系统来说,这是一个笑话。 我喜欢Heroku的想法,但是在拿了五个我们完全没有做的事情之后,我想也许这是错误的select。

networking上有各种各样的解决scheme。 我会尽量把可用的选项压缩到一个文章中。 请在每一步之后重新尝试连接。

  • 步骤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:validation和/或修改您的configuration文件

     vim ~/.ssh/config Host heroku.com Hostname heroku.com Port 22 IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa <--- Should be your public SSH key TCPKeepAlive yes User jsmith@gmail.com 
  • 第4步:从git中删除heroku remote,重新创build连接,通过heroku添加远程创build将只是新的存储库的一个选项。 一定要删除您最初尝试创build的旧回购

      $ git remote rm heroku $ heroku create 
  • 第五步:重新安装Heroku Toolkit

您的heroku密钥和github密钥不同步。

  • 确定你想使用哪个键(build议创build一个新的,即heroku_rsa)。

  • 将密钥添加到github。

  • 相同的密钥添加到heroku中使用: heroku keys:add

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

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

不过,我后来尝试使用-i标志ssh到另一个服务器来指定我的“身份文件”(即私钥),它提示我input我的私钥的密码。 在“解锁”私钥的情况下, git push heroku master命令起作用。 一些结论:

  • 虽然ssh会提示你input身份文件的密码,但git不会。
  • 如果你用另一种方法(如ssh解锁身份文件,它将保持解锁为您的git使用。
  • 似乎没有关于如何永久删除身份文件上的密码保护的任何文档,包括常见的unix命令keytool
  • 以上创build一个新的公钥/私钥对的解决scheme似乎是解决此密码问题的一种解决方法,而不知道这是问题所在。

部署heroku代码时,权限被拒绝(publickey)。 致命的:远端意外挂断

我想这可能有你的解决scheme,至less对我来说

对我来说,似乎问题是我的后台运行ssh-agent,并没有添加相关的私钥。

 ps -afe | grep ssh-agent ssh-add ~/.ssh/id_rsa_heroku_github 

我还必须将公钥添加到github(手动)和heroku

 heroku keys:add ~/.ssh/id_rsa_heroku_github.pub 

如果没有其他解决scheme适用于您,请确保您使用您的帐户loginlinux shell, 而不使用root帐户。

这样,如果你正在用不是你的ssh密钥的所有者的用户运行,git会查找错误的密钥来validation