由于关键指纹无法推送到Heroku

时间:2012-01-09 09:55:27

标签: git heroku ssh git-push

我是Rails的新手,我试图将一个非常简单的应用程序部署到Heroku。这是我部署的第二个应用程序,第一个我能够做到这一点就好了。但是我遇到了一些问题。每当我“ git push heroku master ”时,我都会收到此错误:

  

!你的密钥有指纹xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx无权>访问my_heroku_app。

     

致命:远程端意外挂断

我在登录heroku后尝试管理我的密钥。如果我输入我的控制台“ heroku keys ”,那么我得到:

  

myemailaddress没有钥匙。

但是,如果我运行命令“ heroku键:添加”,我会

  

找到现有的公钥:/Users/michele/.ssh/id_rsa.pub   上传ssh公钥/Users/michele/.ssh/id_rsa.pub   !指纹已经存在。请为每个Heroku帐户使用一个ssh密钥

请帮帮我!这太令人沮丧了,我不知道出了什么问题! 谢谢

9 个答案:

答案 0 :(得分:288)

我遇到了同样的问题,我跟着这篇文章和其他同类文章没有成功: - ((

最后,我找到了解决方案: 我不得不在我的机器中添加新的rsa身份!

所以,首先我创建了一个新的rsa密钥:

ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f  ~/.ssh/id_rsa_heroku

然后将其添加到我的机器

ssh-add ~/.ssh/id_rsa_heroku

,最后,到Heroku

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

之后,

git push heroku master

像魅力一样工作!

希望这有帮助。

答案 1 :(得分:61)

我也有多个密钥和多个heroku帐户,所以我每隔几个月就会遇到这个问题。如上所述Giordano Scalzo,Tom Carchrae和user664833,主要问题是ssh-agent,您可以使用ssh-add命令控制它。手册页(man ssh-add)实际上非常简洁明了,所以请查看。

您可以列出ssh​​-agent所知道的所有密钥:

ssh-add -l

您可以删除ssh-agent知道的所有密钥:

ssh-add -D

或使用

删除特定密钥
ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

别担心!您实际上并没有删除密钥,只是更改了ssh-agent自动尝试使用的密钥,例如,当您尝试推送到heroku时。根据需要添加和删除密钥很容易,所以对我来说,当我对此问题感到沮丧时,解决它的最简单方法是删除所有密钥并仅添加回我想要使用的密钥。< / p>

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it

答案 2 :(得分:38)

您的计算机有SSH密钥,但该SSH密钥与另一个Heroku帐户相关联。

如果您需要在同一台计算机上同时使用这两个帐户,则应在您的计算机上创建一个新的SSH密钥并将其上传到Heroku:

$ ssh-keygen

当提示问你时,请确保将其保存为'/Users/User/.ssh/new_id_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/*

通过在特定项目的heroku文件的远程中选择heroku-alt.git/config,您可以管理哪些项目使用哪些凭据。

答案 3 :(得分:9)

您需要创建新密钥并添加

运行

指定新文件名

ssh-keygen

然后(在我的情况下)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub

答案 4 :(得分:3)

上周我有同样的问题。这个链接帮助了我。我希望它可以帮到你一点点。 http://devcenter.heroku.com/articles/keys

答案 5 :(得分:3)

就我而言,heroku keys已经列出了正确的密钥。所以,我所要做的只是运行ssh-add /path/to/that/key,然后一切正常。

答案 6 :(得分:2)

我还有两个Heorku账户,作为一个解决方案我被邀请&#34;我的主帐户(其密钥由Heroku自动使用的帐户)作为我项目的合作者。

答案 7 :(得分:1)

只是不想为Windows用户添加解决方案。

  1. 首先下载"Putty Key generator"

  2. 用它创建一个密钥OBS你需要将鼠标移动到空白区域以产生随机性。

  3. 保存您的密钥,只需记住将您的密钥重命名为[name] .pub

  4. 在终端中运行heroku keys:add

答案 8 :(得分:0)

在我的情况下,问题是我使用的ssh版本。 我只是将GIT_SSH环境变量设置为另一个(“GIT_SSH = / usr / bin / ssh”),一切都运行正常。