多个heroku帐户

Posted

技术标签:

【中文标题】多个heroku帐户【英文标题】:Multiple heroku accounts 【发布时间】:2011-06-07 11:30:33 【问题描述】:

在我的计算机上使用多个 Heroku 帐户时遇到问题。

问题是它之前通过使用 heroku gem 切换帐户效果很好。但是现在(即使我已经生成了新的 SSH 密钥)它不会工作了。

当我执行git push heroku master 时,它只是说:

my@email.com 无权访问 my_app_name

有人对我如何解决这个问题有任何建议吗?

【问题讨论】:

ssh yourid@server -v 有什么作用? “权限被拒绝(公钥)。”? 哦,请注意...电子邮件“my@email.com”与 Heroku 帐户电子邮件不同...所以似乎有某种混淆导致问题。 复制你的 git/.ssh/ 目录下的私钥和公钥。这对我有用! 【参考方案1】:

您需要确保使用正确的 ssh 密钥。

执行此操作的方法(以及 heroku 帐户插件提示您的方式)是在 ~/.ssh/config 中的 ssh 配置文件中添加一个部分。例如,对于我的工作 heroku 帐户,我的 ssh 配置中有这个:

Host heroku.work
  HostName heroku.com
  IdentityFile ~/.ssh/id_heroku_work_rsa
  IdentitiesOnly yes

现在,这很关键,您需要确保您的 git 远程设置为使用同名主机。在这种情况下,它是 heroku.work。如果您仅通过一个帐户使用 heroku,通常它会是 heroku.com。

所以你需要编辑 git 远程(你可以在你机器上你的 repo 的.git/config 文件中这样做)。将文件更改为如下所示:

 [remote "heroku"]
   url = git@heroku.work:<appname>.git

注意 heroku.work,而不是 heroku.com,并将 替换为您在 heroku 上的应用名称(也就是您的存储库名称)。

【讨论】:

谢谢,这正是我从 heroku 的仪表板创建产品应用程序时所需要的。 git@heroku.work... 并不作为端点存在。如何使该端点推送到? -- 啊,你需要 heroku-accounts 插件。 @jmstone 对.ssh/config 的更改使得heroku.work 解析为heroku.com 是的,这是我的另一个问题,一切都弄清楚了。谢谢! 我已将此页面添加为书签。每当我在推送到 Heroku 时遇到问题时,我都会阅读这个答案并意识到我需要做什么。【参考方案2】:

我通过使用 heroku-accounts 插件解决了这个问题

请参阅此处了解说明

http://martyhaught.com/articles/2010/12/14/managing-multiple-heroku-accounts/

【讨论】:

这个工具最大的问题是它会生成未加密的 SSH 密钥。 自己手动创建密钥,这个问题就消失了。这个插头非常适合这个!【参考方案3】:

你必须被接受为你不拥有的项目的合作者。

它是这样工作的(使用 git):

    项目所有者转到项目的 heroku 控制台 所有者添加协作者的电子邮件地址(用于注册协作者的电子邮件地址) 协作者在他的帐户中设置了他的公共安全密钥(如果他还没有) 协作者添加另一个项目并将其设置为另一个远程

这应该是所有人;在另一个应用程序上部署时,您只需推送另一个遥控器。

【讨论】:

谢谢!!!我花了几个小时试图弄清楚这一点。甚至在 SO 和其他网站上尝试所有不同的方法。向 Heroku 上的两个项目添加相同的电子邮件绝对是最简单的解决方案。 我花了很长时间设置一个识别文件并做了各种技巧来使多个键工作,但这个答案是迄今为止最简单的方法。将您的原始帐户添加为协作者并使用相同的密钥。容易。【参考方案4】:

Heroku 插件https://github.com/ddollar/heroku-accounts 已被弃用。 Heroku 现在维护自己的 https://github.com/heroku/heroku-accounts。不幸的是,它似乎没有逐个项目地存储它应该使用的帐户,因此您需要运行

$ heroku accounts:set account_name

每次您想使用 Heroku 命令行工具时。

可以访问 bash shell 的人的快速解决方案:创建一个本地 bin 目录(它已经存在于 Rails 应用程序中)并在那里创建 bin/heroku。内容:

#!/bin/bash
/usr/bin/heroku accounts:set account_name
/usr/bin/heroku $*

(根据需要替换“project_name”)然后运行

$ chmod +x bin/heroku

然后你可以运行

$ bin/heroku 运行控制台

它会自动为您使用正确的 Heroku 帐户。更好的办法是将 ./bin 添加到您的路径中,这样您就可以重新运行:

$ heroku 运行控制台

【讨论】:

前 7 行足以让我到达我需要去的地方......但如果你在帐户上激活了 2FA,你应该记住,你需要生成一个 API 密钥并将其用作您的密码。 ***.com/a/68228325/10732370【参考方案5】:

我将添加一些关于 heroku-accounts plugin 的内容...此示例假定您预先存在的 heroku 帐户将是 heroku.work 并且您正在添加一个新帐户 heroku.personal。

它还介绍了如何将应用从一个应用移到另一个应用,例如,如果您已达到 25 个应用的上限并正在创建一个新帐户,并希望将一些辅助项目和实验应用移出您的主帐号。

    您可能需要使用该插件来创建您的旧帐户和新帐户,例如,如果您有一个开始,您不能只添加一个新的 heroku.personal,您需要创建 heroku.work 来替换你的旧人 您需要将旧应用重新分配给 heroku.work 如果您要移动一个应用程序,请不要将该应用程序分配给 heroku.personal(使用 heroku accounts:set personal),直到您使用 heroku @ 转移应用程序之后987654324@ 命令如https://devcenter.heroku.com/articles/transferring-apps 所述

所以你可能需要的步骤是:

    安装 heroku-account 插件 访问 heroku.com 并创建您的新帐户(如果您还没有第二个帐户) 运行heroku accounts:add work --auto 创建一个新的heroku.work 帐户来替换您的旧默认帐户(因此请使用您一直使用的相同凭据)。您还需要将新密钥上传到 heroku:heroku keys:add ~/.ssh/identity.heroku.work.pub 运行heroku accounts:add personal --auto 来创建一个新的heroku.personal 帐户(例如,为您的新heroku 帐户使用您的新凭据)。您还需要将新密钥上传到 heroku:heroku keys:add ~/.ssh/identity.heroku.personal.pub 对于每个应用程序,cd 到项目根目录,然后运行heroku accounts:set work(所有这些都会设置 git 以使用您的 heroku.work,这(在本示例中)是您一直使用的同一个 heroku 帐户,只是现在它被称为 heroku.work。 如果您想将应用程序从 heroku.work 移动到 heroku.personal,(a) 将新的 heroku 帐户添加为与 heroku sharing:add &lt;new owner email&gt; 的协作者 (b) 在您的本地目录中,将应用程序切换到 heroku.personal 使用heroku accounts:set personal (c) 使用 heroku sharing:transfer &lt;new owner email&gt; 将应用程序从旧帐户转移**到新帐户,然后 (d) 使用 heroku sharing:remove &lt;old owner email&gt; 删除旧的电子邮件地址合作者(如果您愿意)

** 请注意,我提供的 heroku 链接表明,使用任何付费资源移动应用程序有特殊要求。通常,删除付费资源,然后再将它们添加回来,或者让支持人员这样做。

【讨论】:

【参考方案6】:

安装 Heroku-accounts 插件并进行配置!!

安装

 heroku plugins:install heroku-accounts

用法

添加帐户:

$ heroku accounts:add personal
  Enter your Heroku credentials.
  Email: david@heroku.com
  Password: ******

列出帐户:

$ heroku accounts
  * personal
    work

要切换到其他帐户:

heroku accounts:set personal

要查找当前帐户:

$ heroku accounts:current
  personal

要删除帐户:

$ heroku accounts:remove personal
  Account removed: personal

设置到您的工作 heroku 帐户并推送更改。

【讨论】:

【参考方案7】:

我开始使用 heroku-accounts 插件,但后来意识到我的朋友可以让我成为他 heroku 帐户的合作者,这就是我所需要的。

【讨论】:

支持这个,特别是如果您拥有两个帐户的密码【参考方案8】:

为了让 Git 和 Heroku 控制台都能为我工作,我必须按照 bantic 的指示添加创建 ssh 配置,但我还必须为我的 .git 配置创建两个遥控器:

[remote "origin"]
  url = git@heroku.work:pacific-rock-4904.git
  fetch = +refs/heads/*:refs/remotes/heroku/*
[remote "heroku"]
  url = git@heroku.com:pacific-rock-4904.git
    fetch = +refs/heads/*:refs/remotes/heroku/*

【讨论】:

然后推送到什么? heroku 还是起源?【参考方案9】:

这一直困扰着我一段时间,我从来没有找到我喜欢的解决方案。终于找到了。

(OS X 特定答案。)

您可以创建新用户。转到系统偏好设置 -> 用户和组 -> 添加用户或组按钮。您可以为不同的 Heroku 帐户创建几个用户,我只是将我的用户命名为 user1、user2 等。

然后转到系统偏好设置->共享->远程登录->允许访问:所有用户

此时,您可以转到终端并执行以下操作:

$ ssh user1@localhost

然后你可以这样做:

$ heroku login
$ heroku keys:add

【讨论】:

这看起来很完美,但是否可以让不同的 ssh 用户访问相同的文件夹和文件?【参考方案10】:

我使用 nano .git/config 然后将远程“heroku”的 url 的值替换为 heroku.com > apps > settings > Reveal config vars > Heroku Git URL

【讨论】:

【参考方案11】:

我也有同样的问题。

这不是答案,但临时解决方案是将您的“标准”heroku 电子邮件作为协作者添加到您无法访问的应用程序中。

【讨论】:

对不起,我忘了跟进这个问题,但重新启动我的电脑解决了这个问题。可能无法解决您的问题。 是的,我也在某个地方读到过。但它对我不起作用。【参考方案12】:

我正在使用 win7

1)在win7中创建另一个用户帐户并登录

2) 打开 git bash 并登录到您的新 Heroku 帐户

3) 创建并上传新的 RSA 密钥(此处的说明:https://devcenter.heroku.com/articles/keys)

4) 然后做任何你想做的事(创建新应用,将文件推送到它.....)

5) 每次您需要使用原始 heroku 帐户时,只需登录您的原始 win 用户帐户并使用 heroku

【讨论】:

我不建议这样做 - 当下面有更好的解决方案时,必须切换本地 PC 帐户是多余的。【参考方案13】:

为新电子邮件创建新的公钥/私钥,如下所示

1) ssh-keygen -t rsa -C "mvjohn@klairvoynat.com"

2) 提供保存密钥的新文件名 (/home/.ssh/seckey)

3) 然后将你的新密钥添加到 ssh-agent:- ssh-add ~/.ssh/seckey

4) 然后将你的新密钥添加到 heroku :- heroku keys:add ~/.ssh/seckey

5) 添加SSH配置文件为~/.ssh/config,内容如下

托管 heroku.com 主机名 heroku.com 端口 22 身份只有是 身份文件 ~/.ssh/seckey 用户 mvjohn@klairvoynat.com

托管 heroku.com 主机名 heroku.com 端口 22 身份只有是 身份文件 ~/.ssh/id_rsa 用户 mvjohn@hotmail.com

6) 使用任一方法克隆代码

a) git clone git@heroku.com:your-application.git b) heroku git:clone -a your-application

【讨论】:

【参考方案14】:

编辑该项目的配置,设置正确的电子邮件。从该存储库的根目录,git config user.email &lt;heroku email&gt;

【讨论】:

好像没有效果恐怕…… 向该命令添加“--global”标志会怎样?有时 Heroku gem 会为我阅读它而不是项目的 repo 电子邮件。

以上是关于多个heroku帐户的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Heroku-accounts 插件不再工作,并且我不再能够在 CLI 中的多个帐户之间切换?

Rails、Heroku 和子域。我的特殊情况可行吗?

Heroku + node.js:我有一个使用多个端口的服务器。如何让 Heroku 分配它们?

单个 Heroku 应用程序上的多个工作程序/Web 进程

Heroku procfile多个工人[重复]

Heroku:如何让它访问多个 .js 文件