sessanの日記

主に開発技術関連でお勉強したことをまとめていくサイトです。

仕事用とプライベート用のHerokuアカウントを切り替えて使う

仕事で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

とかを試すとよいです。