仕事用のGitHubアカウントを作る必要性が生じた。仕事用のメールアドレスを使って登録…は良いのだけど、手元のgitコマンドで素直にgithubに繋ごうとすると、プライベート用のアカウントで接続しにいってしまうので悲しい。
というわけでconfigにちょっと細工をしてやる話。
いきなりconfigを示す。
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
が使われて、プライベートのアカウントで接続してしまう。この鍵の選択基準については未調査。ねむい。いつかね。
接続確認。
$ 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するときに、以下のような感じでホストをいじれば良い。
$ git clone git@github.com.sub:hoge/fuga.git
それと、仕事用リポジトリにプライベートのユーザでコミットしないように、以下を設定しておくと良いかも。
$ cd fuga
$ git config --local user.name SHIGOTONONAMAE
$ git config --local user.email SHIGOTONOEMAIL
ぐぐっていた時にパス指定で自動切り替え、みたいなのも見かけたんだけど、今回の用途ではそこまでやるほどの事じゃない気がしたので、こんな感じに落ち着かせました。リポジトリも2つしかないしね。