无法推到 Heroku,因为关键指纹

我是 Rails 的新手,我试图在 Heroku 上部署一个非常简单的应用程序。这是我部署的第二个应用程序,也是我能够做得很好的第一个应用程序。然而,我有一些问题与这一个。每当我输入“ Git push heroku master”,就会得到这个错误:

有指纹的钥匙没有权限访问我的应用程序。

致命: 远程终端意外挂断

登录 Heroku 后,我试着管理我的钥匙。如果我输入我的控制台“ Heroku 钥匙”,那么我得到:

没有我邮箱的钥匙。

但是,如果我运行命令“ Heroku 键: add”我得到什么

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

请帮帮我! 这太让人沮丧了,我不知道怎么回事! 谢谢你

45421 次浏览

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

你将需要创建新的密钥,并添加这些

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

ssh-keygen

然后(就我而言)

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

我也有同样的问题,我关注了这篇文章和其他类似的文章,但都没有成功

最后,我找到了解决办法: 我不得不在我的机器里加上我的新 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-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

在我的例子中,heroku keys已经列出了正确的键。所以,我只需要运行 ssh-add /path/to/that/key然后一切就开始正常运行了。

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

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

Heroku 通过两种方式识别你:

第一个是在. 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

就是这样:)有点复杂,同时又有点简单。我花了三年的时间在墙上撞我的头和尝试和错误发现这个信息。它应该在某个地方被清楚地记录下来,但至少这是一个开始。

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

  1. 首次下载 “油灰键发生器”

  2. 创建一个关键与它 OBS 你需要移动你的鼠标电源空白区域,以产生随机性。

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

  4. 在终端运行 heroku keys:add

我还有两个 Heorku 帐户,作为一个解决方案,我“邀请”我的主帐户(其中的关键是由 Heroku 自动使用)作为我的项目的合作者。

在我的例子中,问题是我使用的 ssh 版本。 我只是将 GIT _ SSH 环境变量设置为另一个(“ GIT _ SSH =/usr/bin/ssh”) ,一切都正常。