« MacBook ProにBootCampでWindows7いれて日本語入力できるようにかなキーと英数キーの割り当て変更 | トップページ | error MSB8008: 指定したプラットフォーム ツールセット (v110) はインストールされていないか無効です »

2012年3月22日 (木)

Heroku - 複数アカウント(heroku-accounts) を1台のMacで管理し、複数Appをgit clone

Herokuアカウントが異なるAppを1台のMacで管理する際、Heroku上のデータをローカルにgit cloneしたときのメモ。

Herokuで複数のアカウントを管理するには、heroku-accounts

◇heroku-accounts
http://martyhaught.com/articles/2010/12/14/managing-multiple-heroku-accounts/
https://github.com/ddollar/heroku-accounts

以下、herokuの2つのアカウントを仮にjimmyとjackとする

$ heroku plugins:install git://github.com/ddollar/heroku-accounts.git
heroku-accounts installed
$ heroku accounts
No accounts found.
$ heroku accounts:add jimmy
Enter your Heroku credentials.
Email: jimmy@xxxxx.xxxxx
Password:

Add the following to your ~/.ssh/config

Host heroku.jimmy
HostName heroku.com
IdentityFile /PATH/TO/PRIVATE/KEY
IdentitiesOnly yes
$ heroku accounts:add jack
Enter your Heroku credentials.
Email: jack@*****.*****
Password:

Add the following to your ~/.ssh/config

Host heroku.jack
HostName heroku.com
IdentityFile /PATH/TO/PRIVATE/KEY
IdentitiesOnly yes
$

次に、sshのkeyを作成してIdentityFile の /PATH/TO/PRIVATE/KEY にPATHを記載する

◇sshのkey
keyを1つは紛失し、1つは複数アカウントの試行錯誤中に削除したため、最初から作成しなおし。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/jimmy/.ssh/id_rsa): /Users/jimmy/.ssh/id_rsa_jimmy
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/jimmy/.ssh/id_rsa_jimmy.
Your public key has been saved in /Users/jimmy/.ssh/id_rsa_jimmy.pub.
The key fingerprint is:
79:cd:45:ee:37:da:18:66:3f:c5:6e:53:c6:44:f5:a3 jimmy@xxxxxxxxxx
The key's randomart image is:
+--[ RSA 2048]----+
| ..+|
| . +.|
| . o.+.o|
| + + ..+=o.|
| + S o .= ..|
| + + E |
| . |
| |
| |
+-----------------+
$

jackに対しても同様に
$ ssh-keygen -t rsa
して
/Users/jimmy/.ssh/id_rsa_jack
を作成
上記のheroku accounts:add実行時のコメントに従い、~/.ssh/config を以下のように編集

Host heroku.jimmy
HostName heroku.com
IdentityFile /Users/jimmy/.ssh/id_rsa_jimmy
IdentitiesOnly yes

Host heroku.jack
HostName heroku.com
IdentityFile /users/jimmy/.ssh/id_rsa_jack
IdentitiesOnly yes

◇git clone

$ heroku accounts:default jimmy
$ git config heroku.account
jimmy
$ heroku accounts
* jimmy
jack
$

で、適当なディレクトリを作成してそこでgit cloneすると

$ git clone git@heroku.com:myapp_jimmy.git .
Cloning into ....

! Your key with fingerprint 79:cd:45:ee:37:da:18:66:3f:c5:6e:53:c6:44:f5:a3 is not authorized to access myapp_jimmy.

fatal: The remote end hung up unexpectedly
$

heroku keys:addが必要

$ heroku keys
No keys for jimmy@xxxxx.xxxxx
$ heroku keys:add
Found the following SSH public keys:
1) id_rsa_jimmy.pub
2) id_rsa_jack.pub
Which would you like to use with your Heroku account? 1
Uploading SSH public key /Users/jimmy/.ssh/id_rsa_jimmy.pub
$

再度git clone

$ git clone git@heroku.com:myapp_jimmy.git . Cloning into .... Permission denied (publickey). fatal: The remote end hung up unexpectedly $

googleさんで調べるとssh-addが必要とのことで

$ ssh-add -l
The agent has no identities.
$ ssh-add ~/.ssh/id_rsa_jimmy
Enter passphrase for /Users/jimmy/.ssh/id_rsa_jimmy:
Bad passphrase, try again for /Users/jimmy/.ssh/id_rsa_jimmy:
$

ssh-agenetが必要らしい

$ ps ax | grep ssh-agent
536 ?? S 0:00.07 /usr/bin/ssh-agent -l
739 s000 R+ 0:00.00 grep ssh-agent
$ eval 'ssh-agent'
SSH_AUTH_SOCK=/tmp/ssh-CpJmPKiFmG/agent.740; export SSH_AUTH_SOCK;
SSH_AGENT_PID=741; export SSH_AGENT_PID;
echo Agent pid 741;
$ ps ax | grep ssh-agent
536 ?? S 0:00.07 /usr/bin/ssh-agent -l
741 ?? Ss 0:00.03 ssh-agent
743 s000 R+ 0:00.00 grep ssh-agent
$ ssh-add ~/.ssh/id_rsa_jimmy
Enter passphrase for /Users/jimmy/.ssh/id_rsa_jimmy:
Identity added: /Users/jimmy/.ssh/id_rsa_jimmy (/Users/jimmy/.ssh/id_rsa_jimmy)
$

再度 git cloneで成功↓ heroku accounts:set もしておく

$ git clone git@heroku.com:myapp_jimmy.git .
Cloning into ....
remote: Counting objects: 35819, done.
remote: Compressing objects: 100% (7548/7548), done.
remote: Total 35819 (delta 27484), reused 35813 (delta 27481)
Receiving objects: 100% (35819/35819), 7.82 MiB | 147 KiB/s, done.
Resolving deltas: 100% (27484/27484), done.
$ heroku accounts:set jimmy
$

もう一つのアカウントもgit clone

$ ssh-add ~/.ssh/id_rsa_jack Enter passphrase for /Users/jimmy/.ssh/id_rsa_jack: Identity added: /Users/jimmy/.ssh/id_rsa_jack (/Users/jimmy/.ssh/id_rsa_jack) $ git clone git@heroku.com:myapp_jack.git . Cloning into ....

! Your key with fingerprint 79:cd:45:ee:37:da:18:66:3f:c5:6e:53:c6:44:f5:a3 is not authorized to access myapp_jack.

fatal: The remote end hung up unexpectedly
$

heroku keys:add してssh-add -Dで削除後にssh-addやりなおしで解決


$ heroku accounts:default jack
$ heroku keys:add ~/.ssh/id_rsa_jack.pub
Uploading SSH public key /Users/jimmy/.ssh/id_rsa_jack.pub
$ ssh-add -D
All identities removed.
$ ssh-add ~/.ssh/id_rsa_jack
Enter passphrase for /Users/jimmy/.ssh/id_rsa_jack:
Identity added: /Users/jimmy/.ssh/id_rsa_jack (/Users/jimmy/.ssh/id_rsa_jack)
$ git clone git@heroku.com:myapp_jack.git .
Cloning into ....
remote: Counting objects: 111, done.
remote: Compressing objects: 100% (85/85), done.
remote: Total 111 (delta 9), reused 111 (delta 9)
Receiving objects: 100% (111/111), 34.77 KiB, done.
Resolving deltas: 100% (9/9), done.
$ heroku accounts:set jack
$

----------
2012/04/15 追記
ある日、修正してそれを
$ git commit -a -m "[commit message]"
$ remote add heroku git@heroku.com:myapp_jack.git
$ git push heroku master
で反映しようとしたら


$ git push heroku master
Permission denied (publickey).

で、
$ ssh-add ~/.ssh/id_rsa_jack
したらいけた。
$ heroku keys:add ~/.ssh/id_rsa_jack
はいらんかった。

ログイン時に自動で毎回ssh-addしとく必要あんのかな?
----------

下記参考にさせていただきました。
Managing Your SSH Keys
Git using wrong email address when talking to Heroku
deploying rails to heroku - unauthorized public key access
Permission denied (publickey) when deploying heroku code. fatal: The remote end hung up unexpectedly
git clone heroku ssh permission denied
SSH Key Disable Caching
herokuでdeployしたときに"Your key with fingerprint xxxxxxxxxxxx is not authorized to access appname."と言われたら
git memo
herokuにpushできなくて泣きそうになった。

|

« MacBook ProにBootCampでWindows7いれて日本語入力できるようにかなキーと英数キーの割り当て変更 | トップページ | error MSB8008: 指定したプラットフォーム ツールセット (v110) はインストールされていないか無効です »

Mac」カテゴリの記事

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1009744/44553105

この記事へのトラックバック一覧です: Heroku - 複数アカウント(heroku-accounts) を1台のMacで管理し、複数Appをgit clone:

« MacBook ProにBootCampでWindows7いれて日本語入力できるようにかなキーと英数キーの割り当て変更 | トップページ | error MSB8008: 指定したプラットフォーム ツールセット (v110) はインストールされていないか無効です »