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密钥,然后再尝试第一步
-
步骤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