github でサブアカウント、ユーザー切り替え

Githubサブアカウントを使おうとしてもSSH公開鍵が同じだと同じユーザーと判断されてしまうため、そのままだとユーザー切り替えとか簡単には出来ません。

以下やりかた

メインアカウントの設定は既にできてるものとします。

まずはサブアカウントの準備

サブアカウント用のsshキーペア作成
cd
mkdir ~/.ssh/key4github/
cd ~/.ssh/key4github/
ssh-keygen -t rsa -C "hoge@example.com"

キーの場所指定で ~/.ssh/key4github/ とする
パスフレーズを忘れないように

サブアカウント用のGithub側設定

右上アイコンAccountSettings>SSH Keys>Add SSH Keys から
できた id_rsa.pub をはりつけ。

接続確認

さっき作った鍵でアクセスできるかどうか試します。

ssh -i ~/.ssh/key4github/id_rsa -T git@github.com

メインとサブの使い分け

簡単にサブアカウントアクセスできるようにSSHの設定を行います。

hoge.github.com でsshできるようにする

~/.ssh/config 編集

Host hoge.github.com
    User git
    Port 22
    Hostname github.com
    IdentityFile ~/.ssh/key4github/id_rsa
    TCPKeepAlive yes
    IdentitiesOnly yes

確認

ssh -T hoge.github.com
サブアカウントリポジトリ作成

githubチュートリアルどおり新repository作ってこのリポジトリ(サブアカ)用のconfigを設定する。
しかし、このままだといつものSSHキーを使ってしまうのでメインのアカウントにつなげてしまいます。

接続先をいじる

リモートの指定を先ほど.ssh/configで設定したホストにする
(gitコマンドで add remote するときに指定しちゃったほうが手っ取り早いかも)

[remote "origin"]
#   url = git@github.com:hoge/firstrepo.git
    url = git@hoge.github.com:hoge/firstrepo.git

これでgithubへの接続時にさっき作ったサブアカウントSSHキーを使うようになり、サブアカウントでの接続となります。

おまけ

ユーザー名や(あれば)APIキーも変更。

[github]
    user = hoge
    token = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[user]
    name = hoge 
    email = hoge@example.com

ここまでだと毎回パスフレーズを聞かれるがそれはまた別件。