仕事用のGitHubアカウントを作る必要性が生じた。仕事用のメールアドレスを使って登録…は良いのだけど、手元のgitコマンドで素直にgithubに繋ごうとすると、プライベート用のアカウントで接続しにいってしまうので悲しい。
というわけでconfigにちょっと細工をしてやる話。

いきなりconfigを示す。

1
2
3
4
5
6
7
8
9
10
11
12
Host github.com.main
	HostName github.com
	User git
	Port 22
	IdentityFile ~/.ssh/main
	IdentitiesOnly yes
Host github.com.sub
	HostName github.com
	User git
	Port 22
	IdentityFile ~/.ssh/sub
	IdentitiesOnly yes

キモはIdentitiesOnly yesのところ。指定した秘密鍵のみを使用する設定。これを書いておけば、github.com.mainに繋ごうとしたときは~/.ssh/mainだけを使う、みたいなカラクリ。
これがnoだとgithub.com.subに繋ごうとしても~/.ssh/mainが使われて、プライベートのアカウントで接続してしまう。この鍵の選択基準については未調査。ねむい。いつかね。

接続確認。

1
2
3
4
$ ssh -T git@github.com.main
Hi main! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@github.com.sub
Hi sub! You've successfully authenticated, but GitHub does not provide shell access.

みたいな感じだ。

あとはcloneするときに、以下のような感じでホストをいじれば良い。

1
$ git clone git@github.com.sub:hoge/fuga.git

それと、仕事用リポジトリにプライベートのユーザでコミットしないように、以下を設定しておくと良いかも。

1
2
3
$ cd fuga
$ git config --local user.name SHIGOTONONAMAE
$ git config --local user.email SHIGOTONOEMAIL

ぐぐっていた時にパス指定で自動切り替え、みたいなのも見かけたんだけど、今回の用途ではそこまでやるほどの事じゃない気がしたので、こんな感じに落ち着かせました。リポジトリも2つしかないしね。