塩焼きブログ

塩焼きに関しての研究内容を公開しています

二段階認証を使いながらGithubのアカウントを複数使い分ける

Githubは本業用とプライベート用を使い分けるといった運用が可能ですがコツがいります。

リポジトリをcloneする時に https から始まるURLで管理すれば、pushするときにGithubのIDとパスワードを求められ、認証すれば鍵など不要でpushができるのですが、二段階認証を導入するとこれが使えなくなります。(部分的に認証を通るようにできるみたいですが、全てのリポジトリに対してこの設定をするのが面倒。)

解決策として今の所思いつくのが、.ssh/configでホスト毎に使う鍵を分けることです。

アカウント毎の鍵を.ssh/configで指定する

.ssh/config を開いて下記のように、それぞれの鍵にそれぞれのHostを割り当てます。

Host one.github.com
HostName github.com
IdentityFile ~/.ssh/one_rsa

Host two.github.com
HostName github.com
IdentityFile ~/.ssh/two_rsa

リポジトリのURLがをちょちょいと変更

最後にプロジェクトの.git/configを開いて下記のようになっている項目を

[remote "origin"]
    url = git@github.com:user/repo.git

このように変更することで指定した鍵を使わせることができます

[remote "origin"]
    url = git@one.github.com:user/repo.git