多个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 <new owner email>
的协作者 (b) 在您的本地目录中,将应用程序切换到 heroku.personal 使用heroku accounts:set personal
(c) 使用 heroku sharing:transfer <new owner email>
将应用程序从旧帐户转移**到新帐户,然后 (d) 使用 heroku sharing:remove <old owner email>
删除旧的电子邮件地址合作者(如果您愿意)
** 请注意,我提供的 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 <heroku email>
【讨论】:
好像没有效果恐怕…… 向该命令添加“--global”标志会怎样?有时 Heroku gem 会为我阅读它而不是项目的 repo 电子邮件。以上是关于多个heroku帐户的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Heroku-accounts 插件不再工作,并且我不再能够在 CLI 中的多个帐户之间切换?