GitHub に複数アカウントを切り分けてアクセスする方法(注意、当方、macです。)

GitHub。使ってますか?

バージョン管理に、昔はSVNもちょろっと使ってましたが、いつの間にやらGit、しかもリモートはGitHubしか使わなくなってました。

そんな便利な、GitHubですが、複数アカウントを利用するのは面倒くさいのです。

お仕事用と誰にも知られたくない個人用。
特にリモートワークが増えている今、自宅のPCで両方にアクセスが必要になってくると、うまくアカウントを切り分ける必要がありますよね。

今回、新しいGitHubアカウントを作ったタイミングで久しぶりにこの周りを触ったので、自分のメモ代わりに簡単にまとめておきます。

証明書を作成します

cd ~/.ssh

証明書の格納ディレクトリに移動します。

ssh-keygen -t rsa -C "monmon@monmon.jp" -f github_monmon

メールアドレスにGitHubユーザーのメールアドレス、証明書のファイル名は適当に(今回はgithub_monmon)決めます。

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

パスフレーズが求められますが、エンターで2回でスルーで良いかと。

github_monmon
github_monmon.pub

秘密鍵、公開鍵が作られます。

ssh/configの作成

vi ~/.ssh/config

configがなけれはこれで新設し、次のようにHostを切り分けます。

Host github.com
  HostName github.com
  IdentityFile ~/.ssh/github
  User git
  TCPKeepAlive yes
  IdentitiesOnly yes
  
Host github_monmon
  HostName github.com
  IdentityFile ~/.ssh/github_monmon
  User git
  TCPKeepAlive yes
  IdentitiesOnly yes

これでホストの指定が [ github.com ]の場合は従来通り秘密鍵 [ github ] を利用し、ホストの指定が[ github_monmon ]だった場合は秘密鍵 [ github_monmon ] を利用して、[ HostName github.com ]にアクセスするようになります。

GitHubに公開鍵を登録

Settings > SSH and GPG keys > New SSH key から行います。

Title に適当な名前。
Keyに公開鍵をセットします。今回の例の場合は [ github_monmon.pub ]の中身です。

cat ~/.ssh/github_monmon.pub

ですね。

GitHubからcloneする

通常のリポジトリの場合、

git clone git@github.com:monmonjp/speechSynthesis.git

こんな感じでクローンしますが、別アカウントを利用する場合は、

git clone git@github_monmon:monmonjp/speechSynthesis.git

このように、ホスト名を先程設定したものに変更して利用します。

最後に、ローカル環境で利用する際の注意点です。

ローカルでコミットするアカウントを変更する

ローカルで作業し、コミットする場合に注意しないと行けないのが、デフォルトのユーザーアカウントでコミットした事になってしまいます。アカウントを折角切り分けているのに本末転倒ですよね(笑)

明示的にユーザーを変更しておきましょう。

git config user.email "monmon@monmon.jp"

GitHubユーザーのメールアドレスを指定してあげます。

git config --global user.email "monmon@monmon.jp"

ローカル環境全体のデフォルトユーザーを変更したい場合は、グローバルオプション付きで。

$ git config user.email
monmon@monmon.jp

これで変更されました。安心して使えますね(笑)