我在电脑上使用多个Heroku账户时遇到了问题。
之前,我通过切换heroku gem的账户来很好地解决了这个问题。但现在(即使我生成了新的SSH密钥),它也不起作用。
当我执行git push heroku master
时,它只会显示:
my@email.com未被授权访问my_app_name
有人能给我一些建议吗?我该如何解决这个问题?
我在电脑上使用多个Heroku账户时遇到了问题。
之前,我通过切换heroku gem的账户来很好地解决了这个问题。但现在(即使我生成了新的SSH密钥),它也不起作用。
当我执行git push heroku master
时,它只会显示:
my@email.com未被授权访问my_app_name
有人能给我一些建议吗?我该如何解决这个问题?
您需要确保使用了正确的ssh密钥。
做法(也是heroku账号插件提示您的)是在~/.ssh/config中添加一个部分。例如,对于我的工作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,并将 <appname> 替换为您在 heroku 上的应用程序名称(也称为您的存储库名称)。
.ssh/config
的更改使得heroku.work
解析到heroku.com
。 - bantic我通过使用heroku-accounts插件来解决这个问题。
请点击此处查看操作指南。
http://martyhaught.com/articles/2010/12/14/managing-multiple-heroku-accounts/
Heroku插件https://github.com/ddollar/heroku-accounts已被弃用。现在,Heroku维护自己的插件,地址为https://github.com/heroku/heroku-accounts。不幸的是,它似乎不能按项目存储应该使用哪个帐户,所以您需要运行
$ heroku accounts:set account_name
#!/bin/bash
/usr/bin/heroku accounts:set account_name
/usr/bin/heroku $*
(根据需要替换 "project_name") 然后运行
$ chmod +x bin/heroku
然后你可以运行
$ bin/heroku run console
它将自动为您使用正确的 Heroku 帐户。更好的方法是将 ./bin 添加到您的路径中,这样您只需运行:
$ heroku run console
我想补充一些关于heroku-accounts插件的内容...这个例子假设你已经有一个名为heroku.work的Heroku账户,并且你正在添加一个新的账户heroku.personal。
它还描述了如何将应用程序从一个账户移动到另一个账户,例如,如果你达到了25个应用程序的最大限制,并且正在创建一个新的账户,想要将一些副业项目和实验性应用程序从主账户中移出。
heroku accounts:set personal
),如https://devcenter.heroku.com/articles/transferring-apps所述。因此,您可能需要执行以下步骤:
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
heroku accounts:set work
(这只是设置git使用您的heroku.work,即(在本示例中)一直使用的相同heroku账户,现在称为heroku.work。heroku sharing:add <new owner email>
将新的heroku账户添加为协作者 (b) 在本地目录中,使用heroku accounts:set personal
将应用程序切换到heroku.personal (c) 使用heroku sharing:transfer <new owner email>
将应用程序从旧账户转移到新账户,然后 (d) 使用heroku sharing:remove <old owner email>
删除旧电子邮件地址协作者(如果您想这样做)请注意,我提供的Heroku链接指出,移动具有任何付费资源的应用程序有特殊要求。通常情况下,先删除付费资源,然后稍后再添加,或者让支持团队来处理。
安装 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 工作账户并推送更改。
我开始使用heroku-accounts插件,但后来意识到我的朋友只需要将我添加为他的heroku账户的协作者就可以了。
[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/*
$ ssh user1@localhost
$ heroku login
$ heroku keys:add