【问题标题】:Multiple heroku accounts多个heroku帐户
【发布时间】: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/ 目录下的私钥和公钥。这对我有用!

标签: git heroku


【解决方案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):

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

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

【讨论】:

  • 谢谢!!!我花了几个小时试图弄清楚这一点。甚至在 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 密钥并将其用作您的密码。 stackoverflow.com/a/68228325/10732370
【解决方案5】:

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

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

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

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

  1. 安装 heroku-account 插件
  2. 访问 heroku.com 并创建您的新帐户(如果您还没有第二个帐户)
  3. 运行heroku accounts:add work --auto 创建一个新的heroku.work 帐户来替换您的旧默认帐户(因此请使用您一直使用的相同凭据)。您还需要将新密钥上传到 heroku:heroku keys:add ~/.ssh/identity.heroku.work.pub
  4. 运行heroku accounts:add personal --auto 来创建一个新的heroku.personal 帐户(例如,为您的新heroku 帐户使用您的新凭据)。您还需要将新密钥上传到 heroku:heroku keys:add ~/.ssh/identity.heroku.personal.pub
  5. 对于每个应用程序,cd 到项目根目录,然后运行heroku accounts:set work(所有这些都会设置 git 以使用您的 heroku.work,这(在本示例中)是您一直使用的同一个 heroku 帐户,只是现在它被称为 heroku.work。
  6. 如果您想将应用程序从 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 电子邮件。
          猜你喜欢
          • 2014-11-30
          • 2012-08-13
          • 2012-10-19
          • 1970-01-01
          • 2011-05-30
          • 2018-05-23
          • 2018-12-26
          • 2021-04-29
          • 1970-01-01
          相关资源
          最近更新 更多