多个heroku帐户


92

在计算机上使用多个Heroku帐户时遇到麻烦。

事实是,在使用heroku gem切换帐户之前,它的效果非常好。但是现在(即使我已经生成了新的SSH密钥),它也无法正常工作。

当我这样做时,git push heroku master它只是说:

my@email.com无权访问my_app_name

有人对我该如何解决有任何建议吗?


ssh yourid @ server -v提供了什么?
亚当·迪米特鲁克

“权限被拒绝(公钥)。”?
Erik

哦,有一个提示……电子邮件“ my@email.com”与Heroku帐户电子邮件不是同一封电子邮件……因此,似乎有些混淆导致了问题。
Erik

在git / .ssh /目录下复制私钥和公钥。这对我行得通!
Dmitri Algazin 2014年

Answers:


162

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

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

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

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

因此,您需要编辑git remote(可以在.git/config计算机上的repo文件中进行此操作)。将文件更改为如下所示:

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

注意heroku。工作,而不是heroku。com,并在heroku上将<appname>替换为您的应用程序名称(又称您的回购名称)。


1
谢谢,这就是我从heroku的仪表板创建产品应用程序时所需要的。
Bachet)

1
git@heroku.work ...作为端点不存在。如何使端点推送到?-嗯,您需要使用heroku-accounts插件。
jmstone617

1
@jmstone所做的更改.ssh/config使其能够heroku.work解决heroku.com
bantic 2013年

是的,这是我的另一个问题,弄清楚了所有问题。谢谢!
jmstone617

我已将此页面加为书签。每当我遇到任何问题要推送到Heroku时,我都会阅读此答案并意识到我需要做的事情。
Septerr 2014年


8

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

它的工作方式如下(使用git):

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

那应该是所有人; 您只需在其他应用程序上进行部署时就可以推入另一个遥控器。


谢谢!!!我花了几个小时试图解决这个问题。甚至在SO和其他站点上尝试所有不同的方法。在Heroku上的两个项目中添加相同的电子邮件无疑是最简单的解决方案。
B

我花了很长时间建立一个标识文件,并做了各种各样的技巧来使多个键起作用,但到目前为止,答案是最简单的方法。将您的原始帐户添加为协作者,并使用相同的密钥。简单。
Peter Nixey 2013年

6

我要在heroku-accounts插件中添加一些内容 ...此示例假定您先前存在的heroku帐户将是heroku.work,并且您要添加一个新帐户heroku.personal。

它还描述了如何将一个应用程序从一个转移到另一个,例如,如果您达到25个应用程序的最大数量并且正在创建一个新帐户,并且想要将一些辅助项目和实验性应用程序从您的主帐户中移出。

  1. 您可能需要使用该插件来创建您的旧帐户和新帐户,例如,如果您有一个新帐户,那么您不仅可以添加新的heroku.personal,还需要创建heroku.work来替换您的旧帐户。
  2. 您需要将旧的应用程序重新分配给heroku.work
  3. 如果你正在移动的应用程序,不应用程序分配给heroku.personal(使用heroku accounts:set personal),直到您使用的Heroku传送该应用sharing如所描述的条命令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。工作。
  6. 如果要将应用程序从heroku.work移至heroku.personal,请(a)与heroku sharing:add <new owner email>本地目录中的(b)作为协作者添加新的heroku帐户,请使用heroku accounts:set personal(c)transfer ** 将应用程序切换至heroku.personal **。使用从旧帐户到新帐户的应用,heroku sharing:transfer <new owner email>然后(d)使用以下方法删除旧的电子邮件地址协作者(如果需要)heroku sharing:remove <old owner email>

**请注意,我提供的heroku链接表示,移动带有任何付费资源的应用程序有特殊要求。通常,请删除已付费的资源,然后稍后再添加,或获得支持。


6

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运行控制台


2

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


支持这个,特别是如果您有两个帐户的密码时
portforwardpodcast 2014年

1

为了使它同时适用于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/*

1
然后推到什么?heroku还是起源?
jmstone617

1

这已经困扰了我一段时间,但我从未找到自己喜欢的解决方案。终于找到了。

(特定于OS X的答案。)

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

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

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

$ ssh user1@localhost

然后,您可以执行以下操作:

$ heroku login
$ heroku keys:add

这似乎很完美,但是是否可以使不同的ssh用户访问相同的文件夹和文件?
陌生人研究员2014年


0

我有完全一样的问题。

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


抱歉,我忘了跟进,但是重新启动计算机解决了问题。可能无法解决您的问题。
埃里克(Erik)

是的,我也读过有关那个地方的信息。不过,这对我没有用。
kbjerring

0

我正在使用win7

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

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

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

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

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


我不建议这样做-当下面有更好的解决方案时,必须切换本地PC帐户是过大的选择。
拉菲·雅各比

无论如何,这是一个选择
mehdok

0

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

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身份仅是IdentityFile〜/ .ssh / seckey用户mvjohn@klairvoynat.com

主机heroku.com主机名heroku.com端口22身份仅是IdentityFile〜/ .ssh / id_rsa用户mvjohn@hotmail.com

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

a)git clone git@heroku.com:您的应用程序.git b)heroku git:clone-您的应用程序


0

安装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帐户并推送更改。


-1

编辑该项目的配置,设置正确的电子邮件。从该存储库的根目录开始git config user.email <heroku email>


恐怕似乎没有效果…
Erik

当您在该命令中添加“ --global”标志时该怎么办?有时候,Heroku gem正在为我阅读而不是该项目的回购电子邮件。
danneu 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.