我是 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 键”,那么我得到:
myemailaddress 没有密钥。
但是,如果我运行命令“heroku keys:add”,我会得到
找到现有的公钥: /Users/michele/.ssh/id_rsa.pub 上传 ssh 公钥 /Users/michele/.ssh/id_rsa.pub !指纹已经存在。请为每个 Heroku 帐户使用一个 ssh 密钥
请帮我!这太令人沮丧了,我不知道怎么了!谢谢
我遇到了同样的问题,我关注了这篇文章和其他同类但没有成功:-((
最后,我找到了解决方案:我必须在我的机器中添加我的新 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
像魅力一样工作!
希望这可以帮助。
我也有多个密钥和多个 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 帐户相关联。
如果您需要在同一台计算机上将两个帐户用于不同的应用程序,您应该在您的计算机上创建一个新的 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
文件的远程文件中选择 heroku
和 heroku-alt
,您可以管理哪些项目使用哪些凭据。
Host heroku-alt not found: 3(NXDOMAIN)
。我把它放在山狮的终端上。 ~/.ssh/config
也不存在,只有一堆 .pub
文件和一个名为 known_hosts
的文件。和想法?
Host
、HostName
和 IdentityFile
行。然后它应该可以正常工作。
这是 Heroku 文档或该问题的其他答案中缺少的非常清楚的解释。至少所有信息似乎都没有出现在任何一个地方。它还可以让您以帐户工具无法做到的方式理解问题。
Heroku 通过两种方式识别您:
第一个在 .git/config
[heroku]
account = acccount_name
这似乎让您可以使用 heroku
执行基本操作
heroku 识别您的第二种方式是通过任何使用 ssh (git push) 的操作。 Heroku 将通过您的 ssh 密钥识别您,如下所述:https://devcenter.heroku.com/articles/keys
此密钥对用于强加密,并在推送代码更改时将您唯一标识为开发人员。
因此,您使用的每个 heroku 帐户在使用 ssh 时都必须向 heroku 发送不同的密钥。按照任何教程创建您的 ssh 密钥。
关键是让 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 年的时间把头撞在墙上,反复试验才发现这个信息。它应该清楚地记录在某处,但至少这是一个开始。
您将需要创建新密钥并添加这些
运行后指定新文件名
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 帐户,作为一种变通方法,我“邀请”了我的主帐户(Heroku 自动使用其密钥的那个)作为我项目的合作者。
只是不想为 Windows 用户添加解决方案。
首先下载“Putty Key generator” 使用它创建一个密钥 OBS 您需要将鼠标移到空白区域以生成随机性。保存您的密钥,只需记住将您的密钥重命名为 [name].pub 运行 heroku 密钥:在终端中添加!
就我而言,问题是我使用的 ssh 版本。我只是将 GIT_SSH 环境变量设置为另一个(“GIT_SSH=/usr/bin/ssh”),对我来说一切正常。
heroku logout
永久破坏的帐户,登录到另一个帐户,并从该帐户中删除了默认的 RSA 密钥。之后,我可以使用这个新生成的密钥进行推送。ssh-add ~/.ssh/identity.heroku.foo
,但我做了相当于ssh-add ~/.ssh/id_rsa_heroku
的操作,因为我也在使用 https://github.com/ddollar/heroku-accounts(Heroku 的多客户经理)。