git push heroku主机权限被拒绝(公钥)。致命:远程端意外挂起
请原谅我有点沮丧,因为Heroku使用SO作为他们的客户支持(我认为至少可以说这是低劣的) 在过去的五个小时里,我一直在试图发布一个应用程序,但这些键总是出了问题。我读了几十篇文章,尝试了一个又一个技巧,试图找出在这个愚蠢、完全不透明的过程中,Heroku把事情搞砸了 我的用例并没有那么难:我已经为我的heroku应用程序创建了一个新的密钥对。我已将该钥匙设置为我的钥匙:git push heroku主机权限被拒绝(公钥)。致命:远程端意外挂起,git,heroku,Git,Heroku,请原谅我有点沮丧,因为Heroku使用SO作为他们的客户支持(我认为至少可以说这是低劣的) 在过去的五个小时里,我一直在试图发布一个应用程序,但这些键总是出了问题。我读了几十篇文章,尝试了一个又一个技巧,试图找出在这个愚蠢、完全不透明的过程中,Heroku把事情搞砸了 我的用例并没有那么难:我已经为我的heroku应用程序创建了一个新的密钥对。我已将该钥匙设置为我的钥匙: > heroku keys === travis@xxxx.com Keys ssh-rsa AAAAB3
> heroku keys
=== travis@xxxx.com Keys
ssh-rsa AAAAB3NzaC...avOqfA7ZBd travis@xxxx.com
我可以登录并“创建”一个应用程序(愚蠢的名字,因为它似乎在创建一个git repo,而不是任何类型的应用程序)。但每次我尝试推送我的应用程序时,我都会得到:
> git push heroku master
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
我对世跆拳道正在进行的工作一无所知;我只是被卡住了,头撞在键盘上,没有办法,只能希望全能的谷歌之神能够回答。谷歌没有回答这个问题(好吧,让我收回这一点,我已经看到了十几种方法来回答这个问题)
对于一个被认为是简单的系统来说,这是一个笑话。我喜欢Heroku的想法,但在花了五年时间却什么也没做之后,我想这可能是一个错误的选择。我也遇到了同样的问题,这是我的理论: 我很久以前就注册了Heroku,给了他们我的github公钥。当尝试通常的
git-push-heroku-master
时,它会去查找我的私钥,可以在~/.ssh/github\u-rsa
找到。然后,它会随着您发布的消息而悄无声息地失败
但是,我后来尝试使用-I
标志将ssh
插入另一台服务器,以指定我的“身份文件”(即私钥),它提示我输入私钥的密码。“解锁”私钥后,git-push-heroku-master
命令可以工作。一些结论:
- 虽然
会提示您输入身份文件的密码,但ssh
不会git
- 如果您使用另一种方法(如
)解锁标识文件,它将在ssh
使用时保持解锁状态git
- 似乎没有任何文档说明如何永久删除身份文件上的密码保护,包括使用通用unix命令
李>keytool
- 上述创建新的公钥/私钥对的解决方案似乎是解决此密码问题的一个解决方案,而不知道这就是问题所在
我想这可能有你的解决方案,至少对我来说是这样。网络上有各种各样的解决方案。我将尝试将可用选项浓缩到一篇文章中。请在每一步后再次尝试连接
- 步骤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:验证和/或修改配置文件
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
- 步骤5:重新安装Heroku工具包
- 确定要使用的密钥(建议创建一个新密钥) heroku_rsa)
- 将密钥添加到github
- 使用:
heroku键:Add
这样,如果您使用的用户不是ssh密钥的所有者,git将查找错误的密钥以与我进行身份验证,问题似乎是我在后台运行了ssh代理,并且没有向其添加相关的私钥
ps -afe | grep ssh-agent
ssh-add ~/.ssh/id_rsa_heroku_github
我还必须(手动)将公钥添加到github和heroku
heroku keys:add ~/.ssh/id_rsa_heroku_github.pub
我会让你知道,我们为Heroku提供的客户支持是一流的劣质产品。我对SO的回答质量印象深刻。我只是认为,无论技术多么先进,为产品提供客户支持都是一种蹩脚的方式。如果我必须提供个人帐户详细信息,会发生什么情况?不完全是我想与全世界分享的(当我需要修改原始帖子时,我意识到了这一点)。你看到了吗?特别是关于在git上注册公钥的部分?同样的问题,这里得到了解决方案:Remi的链接解决方案对我有效。步骤1为我做到了!(不过,在将它们推送到Heroku之前,我确实为我的机器和Github重新创建了SSH密钥。)谢谢!所有这些对我都不起作用,尽管我非常小心地从顶部安装了两次,而且安装得非常干净。最后,让这一切正常工作的是确保我的GitHub键和Heroku键是相同的。我甚至不明白为什么会有不同,除非我没有注意到Heroku依赖GitHub,但它解决了这个问题。可以在GitHub上的帐户设置中更改密钥。我认为您应该将此添加到您的答案中。我认为IdentityFile行应该是您的私有ssh密钥。你的意思是“heroku创建”<据我所知,代码>git heroku create不是一件事。哇。关于这次经历,我想不出什么好说的。我遵循了许多方法,包括卸载/重新安装git、github和用msysgit替换putty。步骤1-3最终完成了,但更改需要在github ssh_配置中进行。在几次无任何问题地删除和重置我的github键之后,heroku的过程真的很令人沮丧。我真的真的真的真的真的希望我在四个小时前读过这个答案。虽然我认为我在这一过程中学到了很多,但也不全是坏事。我有两个不同的Heroku帐户(一个使用我的工作电子邮件,用于工作中的项目,另一个使用我的个人电子邮件,用于
heroku keys:add ~/.ssh/id_rsa_heroku_github.pub