🔑
Macで複数のGitHubアカウントを使い分ける(SSH + プロジェクト単位のauthor設定)
🎯 ゴール
- 複数の GitHub アカウント(例:個人用・仕事用)を Mac で安全に使い分ける
- SSH 接続をアカウントごとに設定
-
プロジェクト単位で
user.name/user.emailを固定して、誤ったアカウントでコミット・push しないようにする
🧱 手順の全体像
- SSHキーをアカウントごとに作成
-
~/.ssh/configにHost別設定を記述 - GitHub に公開鍵を登録
- 接続確認
- 各プロジェクトで
git config --localを設定
1. SSH鍵を作成 (Ed25519)
GitHub公式も推奨しているEd25519方式で作成します。
RSAよりもセキュリティと速度のバランスが良く、今後はこちらが主流です。
# 個人アカウント用
ssh-keygen -t ed25519 -C "personal@example.com" -f ~/.ssh/id_ed25519_personal
# 仕事アカウント用
ssh-keygen -t ed25519 -C "work@example.com" -f ~/.ssh/id_ed25519_work
作成後、SSHエージェントに登録(macOS):
eval "$(ssh-agent -s)"
ssh-add --apple-use-keychain ~/.ssh/id_ed25519_personal
ssh-add --apple-use-keychain ~/.ssh/id_ed25519_work
2. ~/.ssh/config の設定
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
UseKeychain yes
AddKeysToAgent yes
Host work.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
UseKeychain yes
AddKeysToAgent yes
ポイント:
-
Host名に別名をつけることで、アカウントを切り替えられる(work.github.comなど) -
UseKeychain yesにより再起動後もパスフレーズ入力が不要になる
3. GitHub に公開鍵を登録
各アカウントでログインし、
Settings → SSH and GPG keys → New SSH key から以下を追加。
# 公開鍵をコピー
pbcopy < ~/.ssh/id_ed25519_personal.pub
pbcopy < ~/.ssh/id_ed25519_work.pub
4. 接続確認
ssh -T github.com
ssh -T work.github.com
Hi <username>! You’ve successfully authenticated... が出ればOK。
5. プロジェクト単位で author を固定(重要)
SSHで接続先を切り替えても、Gitのコミットユーザー設定は別途必要です。
誤ったメールアドレスでコミットしないよう、リポジトリごとに設定しておきます。
# 各プロジェクトのルートで実行
git config --local user.name "Your Work Name"
git config --local user.email "work@example.com"
# 設定漏れ防止(グローバル設定を使わない)
git config --global user.useConfigOnly true
git config --global --unset user.email
git config --global --unset user.name
確認:
git config --get user.name
git config --get user.email
これで、そのプロジェクトでは常に指定したアカウント情報が使われるようになります。
6. リポジトリのclone例
# 個人用アカウント
git clone git@github.com:<personal-username>/<repo>.git
# 仕事用アカウント
git clone git@work.github.com:<work-username>/<repo>.git
既存リポジトリのリモートURLを切り替える場合:
git remote set-url origin git@work.github.com:<work-username>/<repo>.git
7. (応用)ディレクトリ単位で自動切替する
同じフォルダ配下に複数の仕事用リポジトリを置くなら、
~/.gitconfig の includeIf を使って自動的に author を切り替える方法もあります。
# ~/.gitconfig
[user]
name = Your Personal Name
email = personal@example.com
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
# ~/.gitconfig-work
[user]
name = Your Work Name
email = work@example.com
~/work/ 以下にあるすべてのリポジトリで自動的に仕事用設定が反映されます。
🔗 参考資料
🧭 まとめ
-
~/.ssh/configでアカウントをHost別に分ける - 各プロジェクトで
git config --local user.emailを固定することで コミットの誤り防止 - 長期的には
includeIfによる自動切替も便利
この設定をしておけば、個人・業務・OSS のすべてで安全にGitHubを使い分けられます。
Discussion