无法推送到Heroku,因为密钥指纹



我是Rails的新手,我试图将一个非常简单的应用程序部署到Heroku。这是我部署的第二个应用程序,也是我能够很好地完成的第一个应用程序。但是我对此有一些问题。每当我">git push heroku master"时,我都会收到此错误:

! 带有指纹

xx:xx:xx:xx:xx:xx:xx 的密钥无权>访问my_heroku_app。

致命:远程端意外挂断

我尝试在登录 heroku 后管理我的密钥。如果我在控制台中输入">heroku 键",那么我会得到:

我的电子邮件地址没有密钥。

但是,如果我运行逗号">heroku keys:add",我会得到

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

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

div class="one_answers">

我不得不在我的机器中添加我的新 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-agent,您可以使用 ssh-add 命令进行控制。 手册页(man ssh-add(实际上非常清晰简洁,所以请检查一下。

您可以使用以下命令列出 ssh 代理知道的所有密钥:

ssh-add -l

您可以使用以下命令删除 ssh 代理知道的所有密钥:

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 

然后,您需要将备用主机添加到~/.ssh/config heroku.com

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文件的远程herokuheroku-alt之间进行选择,您可以管理哪些项目使用哪些凭据。

这里有一个非常清晰的解释,这是 Heroku 文档或其他问题的答案所缺乏的。至少所有信息似乎都没有出现在任何一个地方。它还可以让您以帐户工具无法理解的方式了解问题。

Heroku 通过 2 种方式识别您的身份:

第一个是在 .git/config 中

[heroku]
    account = acccount_name

这似乎可以让您使用heroku执行基本操作

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

此密钥对用于强加密,并且唯一 在推送代码更改时将你标识为开发人员。

因此,在使用 ssh 时,您处理的每个 heroku 帐户都必须向 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 时使用它。不要 heroku.com,而是使用您在 .ssh/config 中设置的虚拟域

[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用户添加解决方案。

  1. 首次下载"腻子钥匙生成器">

  2. 创建一个密钥 OBS 您需要移动鼠标以生成随机性。

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

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

就我而言,问题是我使用的 ssh 版本。我只是将GIT_SSH环境变量设置为另一个("GIT_SSH=/usr/bin/ssh"(,一切对我来说都很好。

相关内容

最新更新