由于密钥指纹,无法推送到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
文件的远程中selectheroku
和heroku-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。
-
首先下载“腻子密钥生成器”
-
使用OBS创build一个密钥,您需要移动鼠标移动空白区域以产生随机性。
-
保存你的密钥,只记得把你的密钥重命名为[name] .pub
-
运行
heroku keys:add
terminal!
在我的情况下,问题是我使用的SSH版本。 我只是将GIT_SSH环境variables设置为另一个(“GIT_SSH = / usr / bin / ssh”),一切正常。