我在计算机上使用多个Heroku帐户时遇到了麻烦.
事情是,通过使用heroku gem切换帐户,它之前的效果很好.但是现在(即使我已经生成了新的SSH密钥)它也无法工作.
当我这样做时git push heroku master它只是说:
my@email.com无权访问my_app_name
有没有人对如何解决这个问题有任何建议?
ban*_*tic 162
您需要确保使用正确的ssh密钥.
这样做的方式(以及heroku帐户插件提示你的方式)是在〜/ .ssh/config中为ssh配置文件添加一个部分.例如,对于我的工作heroku帐户我在我的ssh配置中有这个:
Host heroku.work
HostName heroku.com
IdentityFile ~/.ssh/id_heroku_work_rsa
IdentitiesOnly yes
Run Code Online (Sandbox Code Playgroud)
现在,这是至关重要的,您需要确保您的git远程设置为使用相同的命名主机.在这种情况下,它是heroku.work.通常情况下,如果您只使用一个帐户使用heroku,那么它将是heroku.com.
因此,您需要编辑git remote(您可以在.git/config计算机上的repo文件中执行此操作).将文件更改为:
[remote "heroku"]
url = git@heroku.work:<appname>.git
Run Code Online (Sandbox Code Playgroud)
注意heroku.工作,而不是heroku.com,并在heroku上将<appname>替换为您的应用程序名称(也称为您的回购名称).
小智 35
我通过使用heroku-accounts插件解决了这个问题
请看这里的说明
http://martyhaught.com/articles/2010/12/14/managing-multiple-heroku-accounts/
您必须被接受为您不拥有的项目的合作者.
它的工作原理如下(使用git):
这应该是所有人; 在部署其他应用程序时,您只需要推送另一台遥控器.
我将在heroku-accounts插件中添加一些内容...此示例假设您已存在的heroku帐户将是heroku.work并且您正在添加一个新帐户heroku.personal.
它还介绍了如何将应用程序从一个应用程序移动到另一个应用程序,例如,如果您已达到最大25个应用程序并且正在创建新帐户并希望将一些辅助项目和实验性应用程序移出主帐户.
heroku accounts:set personal),直到后您转移使用的Heroku该应用sharing如所描述的条命令https://devcenter.heroku.com/articles/transferring-apps所以你可能需要的步骤是:
heroku accounts:add work --auto以创建一个新的heroku.work帐户来替换旧的默认帐户(因此请使用您一直使用的相同凭据).您还需要将新密钥上传到heroku:heroku keys:add ~/.ssh/identity.heroku.work.pubheroku accounts:add personal --auto以创建一个新的heroku.personal帐户(例如,使用您的新heroku帐户的新凭据).您还需要将新密钥上传到heroku:heroku keys:add ~/.ssh/identity.heroku.personal.pubheroku accounts:set work(所有它设置git使用你的heroku.work,这是(在这个例子中)你一直在使用的相同的heroku帐户,只是现在它被称为heroku.工作.heroku sharing:add <new owner email>(b)在本地目录中的协作者,使用heroku accounts:set personal(c)transfer**将应用程序切换到heroku.personal 应用程序从旧帐户到新帐户heroku sharing:transfer <new owner email>然后使用(d)删除旧的电子邮件地址协作者(如果您愿意)使用heroku sharing:remove <old owner email>**请注意我提供的heroku链接说,有任何付费资源移动应用程序有特殊要求.通常,删除付费资源,然后稍后再添加,或获得支持.
Heroku插件https://github.com/ddollar/heroku-accounts已被弃用.Heroku现在维护自己的https://github.com/heroku/heroku-accounts.不幸的是,它似乎没有按项目存储它应该使用的帐户,因此您需要运行
$ heroku accounts:set account_name
Run Code Online (Sandbox Code Playgroud)
每次要使用Heroku命令行工具时.
有权访问bash shell的人的快速解决方案:创建一个本地bin目录(它已经存在于Rails应用程序中)并在那里创建bin/heroku.内容:
#!/bin/bash
/usr/bin/heroku accounts:set account_name
/usr/bin/heroku $*
Run Code Online (Sandbox Code Playgroud)
(根据需要替换"project_name")然后运行
$ chmod + x bin/heroku
然后你就可以跑了
$ bin/heroku运行控制台
它将自动为您使用正确的Heroku帐户.更好的是将./bin添加到您的路径中,这样您就可以恢复运行:
$ heroku运行控制台