由于密钥指纹,无法推送到Heroku

我是Rails的新手,我正试图在Heroku上部署一个非常简单的应用程序。 这是我部署的第二个应用程序,而且我能够做到的第一个应用程序就好了。 不过,我有这个问题。 每当我“ git推heroku主 ”,我得到这个错误:

! 指纹xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx的密钥未被授权访问my_heroku_app。

致命的:远端意外挂断

login到heroku后,我试图pipe理我的密钥。 如果我input我的控制台“ heroku键 ”,那么我得到:

没有钥匙myemailaddress。

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

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

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

我也有同样的问题,我跟着这个post和其他同类的人没有成功: – ((

最后,我find了解决scheme:我必须在我的机器中添加新的rsa标识!

所以,我首先创build了一个新的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 

像魅力一样工作!

希望这可以帮助。

我也有多个键和多个Heroku帐户,所以我每隔几个月遇到这个问题。 正如Giordano Scalzo,Tom Carchrae和user664833所提到的,主要问题是使用ssh-add命令控制的ssh-agent。 手册页( 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时。 根据需要添加和删除密钥很容易,所以对于这个问题,当我感到沮丧的时候,最简单的方法就是删除所有的密钥,然后只添加一个我现在想要使用的密钥。

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

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

如果您需要在同一台计算机上同时使用两个帐户,则应在计算机上创build一个新的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/* 

通过在特定项目的.git/config文件的远程中selectherokuheroku-alt ,您可以pipe理哪些项目使用哪个凭证。

这里有一个非常明确的解释,从Heroku文档或其他问题的答案缺乏。 至less所有的信息似乎都没有出现在任何一个地方。 这也让你了解问题的方式,帐户工具不。

Heroku通过两种方式识别你:

第一个是在.git / config中

 [heroku] account = acccount_name 

这似乎让你使用heroku执行基本的操作

heroku识别你的第二种方法是使用ssh(git push)的任何操作。 Heroku将通过您的ssh密钥识别您,如下所述: https : //devcenter.heroku.com/articles/keys

这个密钥对用于强大的密码学,并且在推动代码更改时唯一地标识您是开发人员。

因此,每个使用ssh的heroku账户都必须发送一个不同的密钥给heroku。 按照任何教程来创build您的SSH密钥。

关键是让SSH为每个Heroku帐户使用不同的密钥。 你如何configuration这个? 你需要做两件事情:

1)您需要创build一个“虚拟”域,您的.ssh / config将拦截并重新configuration。 这将告诉ssh你想要的'actual'域,以及使用哪个特殊的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 

就是这样:)同时有点复杂和有点简单。 它已经花了我三年的时间,我的头撞墙,反复试验,发现这个信息。 应该清楚地logging在某个地方,但至less这是一个开始。

您将需要创build新的密钥并添加这些密钥

运行后指定一个新的文件名

 ssh-keygen 

那么(就我而言)

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

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

在我的情况下, heroku keys已经列出了正确的键。 所以,我所要做的就是运行ssh-add /path/to/that/key ,然后一切正常。

我也有两个Heorku账户,作为解决scheme,我“邀请”了我的主账户(Heroku自动使用的那个账户)作为我的项目的合作者。

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

  1. 首先下载“腻子密钥生成器”

  2. 使用OBS创build一个密钥,您需要移动鼠标移动空白区域以产生随机性。

  3. 保存你的密钥,只记得把你的密钥重命名为[name] .pub

  4. 运行heroku keys:addterminal!

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