StoryEdit 開発日誌

ウェブアプリ StoryEditを作ってましたが延期。普通のブログ。

githubアカウントを使い分ける

仕事用と、個人用。本名と匿名。気分で切り替えたい時もあるでしょう。
そんなときは、githubアカウントを使い分けましょう!
やり方は前から知ってたんですが、なぜかうまくいかなくて諦めていたのですが、もう一回やってみたところ、rsaのスペルミスだったという罠。
ruieはこちらで更新中です。

https://github.com/welovy/ruie

前提

ここでは、githubにすでにアカウントをもってることとします。taroとしましょう。ssh鍵も登録済みで、普段はこちらでgithubを使ってるとします。以下は、同じPCからhanakoというアカウントでgithubを使いたい、というシチュエーションへの開放です。

まずは鍵を作る

まずはメールアドレスが必要です。ここではhanako@mailとしましょう。hanako@mailでgithubアカウントを作成して、ssh鍵を登録します。しかし、taro用に登録した鍵を登録しようとすると、はじかれてしまいます。github側のkeyringに、すでにtaro用として登録されているからなのです。そこで、hanakoさん用の新しい鍵を作りましょう。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxxx/.ssh/id_rsa): id_rsa.hanako
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

エンター連発すると既存の鍵を上書きしてしまうなんてことがあるので、バックアップは忘れずに
パスフレーズは空でつくると、いちいちパスワード聞かれなくて楽ですね。

鍵をgithubに登録

まぁ、ここはいいですね。id_rsa.hanako.pubというファイルの中身をgithubに登録。

切り替えの肝!configファイル

さて、ここがキモです。gitは、ssh認証が必要になれば、sshに鍵をもらいにいくわけですが、デフォルトは~/.ssh/id_rsaを読みにいきます。ここで、ssh側に、ホストに応じて鍵を使い分ける設定を記述してあげることで、鍵の使い分けが可能になります。

以下は、~/.ssh/config というファイルに記述しましょう。

Host github
HostName github.com
IdentityFile ~/.ssh/id_rsa

Host github-private
HostName github.com
IdentityFile ~/.ssh/id_rsa.hanako

これでssh側の設定はおわり。最後にgit側の設定です。

ホスト名で切り替える

普段、gitのリモートリポジトリの設定は、以下のようにやっていると思います。

$ git remote add origin git@github.com:hanako/hoge.git

ここを、先ほどconfigに記述したホスト名で記述すれば、鍵が変わります。

$ git remote add origin git@github-private:hanako/hoge.git

ちなみに、taroさんで使うときは、@github もしくは普通に@github.comです。

もうひとつ、git側のuser.name, user.emailも忘れずに書き換えましょう。ここのemailなどから、ログで個人が特定される可能性もあるので。

$ git config user.name "hanako"
$ git config user.email "hanako@mail"

設定の確認は、以下のコマンドで。

$ git config --list