Git 无法推送到Heroku,因为密钥指纹
我是Rails的新手,我试图在Heroku上部署一个非常简单的应用程序。这是我部署的第二个应用程序,也是第一个我能够做得很好的应用程序。然而,我有一些问题,这一个。每当我“git推送heroku master”时,就会出现以下错误: !!您的指纹为xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx的密钥无权>访问我的应用程序 致命:远程端意外挂起 登录heroku后,我尝试管理我的密钥。如果我在控制台中键入“heroku键”,那么我会得到: 没有myemailaddress的键 但是,如果我运行comand“heroku键:add”,我会得到 找到现有公钥:/Users/michele/.ssh/id\u rsa.pub 正在上载ssh公钥/Users/michele/.ssh/id_rsa.pub ! 指纹已经存在。请为每个Heroku帐户使用一个ssh密钥 请帮帮我!这是苏福瑞,我不知道怎么了!Git 无法推送到Heroku,因为密钥指纹,git,heroku,ssh,git-push,Git,Heroku,Ssh,Git Push,我是Rails的新手,我试图在Heroku上部署一个非常简单的应用程序。这是我部署的第二个应用程序,也是第一个我能够做得很好的应用程序。然而,我有一些问题,这一个。每当我“git推送heroku master”时,就会出现以下错误: !!您的指纹为xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx的密钥无权>访问我的应用程序 致命:远程端意外挂起 登录heroku后,我尝试管理我的密钥。如果我在控制台中键入“heroku键”,那么我会得到:
谢谢我上周也有同样的问题。这帮了我的忙。我希望这对你有点帮助 youn需要创建新密钥并添加这些密钥 运行后指定新文件名
ssh-keygen
然后(就我而言)
我也有同样的问题,我跟随了这篇文章和其他类似的文章,但没有成功:-(( 最后,我找到了解决方案: 我必须在我的机器中添加我的新rsa身份 首先,我创建了一个新的rsa密钥:
ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f ~/.ssh/id_rsa_heroku
然后把它加到我的机器上
ssh-add ~/.ssh/id_rsa_heroku
最后,向希罗库致敬
heroku keys:add ~/.ssh/id_rsa_heroku.pub
此后,
git push heroku master
工作得很有魅力
希望这有帮助。我也有多个密钥和多个heroku帐户,所以我每隔几个月就会遇到这个问题。正如Giordano Scalzo、Tom Carchrae和user664833所提到的,主要问题是ssh代理,您可以使用
ssh add
命令来控制它。手册页(man ssh add
)它实际上非常清晰和简洁,所以请查看它
您可以列出ssh代理知道的所有密钥:
ssh-add -l
ssh-add -D
您可以通过以下方式删除ssh代理知道的所有密钥:
ssh-add -l
ssh-add -D
或使用删除特定密钥
ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own
别担心!您实际上并没有删除密钥,只是更改ssh代理自动尝试使用的密钥,例如,当您尝试推送到heroku时。根据需要添加和删除密钥很容易,所以对我来说,当我对这个问题感到沮丧时,最简单的解决方法是删除所有密钥,然后只添加我想要的密钥目前使用
ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it
在我的例子中,
heroku key
已经列出了正确的密钥。因此,我所要做的就是运行ssh add/path/to/that/key
,然后一切都开始正常工作。您的计算机有一个ssh密钥,但该ssh密钥与另一个heroku帐户关联
如果您需要为同一台计算机上的不同应用程序使用两个帐户,则应在您的计算机上创建一个新的SSH密钥并将其上载到Heroku:
$ ssh-keygen
当提示询问您时,请确保将其保存为“/Users/User/.ssh/new\u id\u rsa.pub”
$ heroku keys:add /Users/User/.ssh/new_id_rsa.pub
然后,您需要为heroku.com
添加备用主机到~/.ssh/config
:
Host heroku-alt
HostName heroku.com
IdentityFile ~/.ssh/new_id_rsa
然后更新项目中的.git/config
,以使用主机别名:
[remote "heroku"]
url = git@heroku-alt:myapp.git
fetch = +refs/heads/*:refs/remotes/heroku/*
通过在特定项目的
.git/config
文件的远端选择heroku
和heroku alt
,您可以管理哪些项目使用哪些凭据。这里有一个非常清楚的解释,这是heroku文档或其他问题答案中缺少的。至少所有信息都看不到它还能让你以帐户工具无法理解的方式理解问题
Heroku通过两种方式识别您:
第一个在.git/config中
[heroku]
account = acccount_name
这似乎可以让您使用heroku执行基本操作
heroku识别您的第二种方式是通过任何使用ssh(git push)的操作。heroku将通过ssh密钥识别您,如下所述:
此密钥对用于强加密,并且
在推动代码更改时将您标识为开发人员
因此,您使用的每个heroku帐户在使用ssh时都必须向heroku发送不同的密钥
关键是让SSH为每个Heroku帐户使用不同的密钥。如何配置此项?您需要做两件事:
1) 您需要创建一个.ssh/config将拦截并重新配置的“虚拟”域。这将告诉ssh您想要的“实际”域,以及要使用的特殊ssh密钥
Host heroku.my_unique_key
HostName heroku.com
IdentityFile ~/.ssh/identity.heroku.my_unique_key
IdentitiesOnly yes
2) 更改.git/config以在使用git push时使用它。使用在.ssh/config中设置的虚拟域,而不是heroku.com
[remote "heroku"]
url = git@heroku.com.git
[remote "heroku"]
url = git@heroku.my_unique_key:myapp.git
就是这样:)有点复杂,同时也有点简单。我花了3年的时间才发现这个信息,我的头撞在墙上,反复试验。应该在某个地方清楚地记录下来,但至少这是一个开始 只是想为Windows用户添加解决方案
我还有两个Heorku帐户,作为解决办法,我“邀请”了我的主帐户(其密钥由Heroku自动使用的帐户)作为项目的合作者。在我的情况下,问题是我使用的ssh版本。
我刚刚将GIT_SSH环境变量设置为另一个(“GIT_SSH=/usr/bin/SSH”),一切正常。我看到了那个链接,尝试再次删除和添加我的密钥,但仍然无法正常工作。你解决了这个问题吗?你能总结一下这个链接的说明吗?我们在这里尽量避免只链接的答案。这只解释了如何生成密钥