仕事でherokuを使っている人は、大体の場合プライベートでも使っていることが多いと思うが、これを切り替える方法でheroku-acccountsというherokuコマンドのプラグインがあるので、この使い方を紹介します。
heroku accountのインストール
$ heroku plugins:install git://github.com/ddollar/heroku-accounts.git
切り替えたいアカウントを1つ追加する
$ heroku accounts:add private Enter your Heroku credentials. Email: hogehoge@hogehoge.com Password: ****** Add the following to your ~/.ssh/config Host heroku.private HostName heroku.com IdentityFile /PATH/TO/PRIVATE/KEY IdentitiesOnly yes
後半部分の指示にしたがって、.ssh/configの末尾にこれを記載する
Host heroku.private HostName heroku.com IdentityFile /PATH/TO/PRIVATE/KEY IdentitiesOnly yes
/PATH/TO/PRIVATE/KEY にはHerokuにアップロードしているssh鍵のprivate_keyを記載する。
大抵は、/Users/hoge/.ssh/id_rsaとかだと思う。
Herokuにアップロードしているssh鍵は以下で確認できる
$ heroku keys
追加していない場合は、以下で追加しておく。公開鍵の方はherokuにアップロードされる。
$ heroku keys:add
Found existing public key: /Users/adam/.ssh/id_rsa.pub
Uploading SSH public key /Users/adam/.ssh/id_rsa.pub... done
参考
Herokuでの鍵の管理の仕方
Managing Your SSH Keys | Heroku Dev Center
Heroku account を切り替える
$ heroku accounts:set private
使用中のHeroku accountを確認
$ heroku accounts * private
すでにherokuにリポジトリがあり、そこをリモートリポジトリとして追加する場合、Heroku accountを利用している人は、git@heroku.com:hogehoge.gitと指定してはダメで、以下のように指定しなければならない。
$ git remote add heroku git@heroku.private:hogehoge.git
この状態でgit push heroku master とかやるとHerokuにデプロイできる。
ちなみに、git remote -vとかやると、git@heroku.com/hogehoge.gitのheroku.comのところが.ssh/configに記載したheroku.privateに変わっているのが確認できる。
$ git remote -v heroku git@heroku.private:hogehoge.git (fetch) heroku git@heroku.private:hogehoge.git (push)
仕事用のHerokuアカウントの追加
同様な手順で新しいアカウントを追加するだけ。
アカウント追加後、切り替えたアカウントの認証がうまくいかない場合は、
$ heroku login
とかを試すとよいです。