GitHub複数アカウント運用手順

GitHubで個人アカウントと会社アカウントを同一PCで使い分けていた際に、HTTPS認証だと色々面倒事が起きたのでSSH認証への変更を行なった際の備忘録です。

前提

  • GitHubアカウント1(個人)
    • ユーザー名:user-person
  • GitHubアカウント2(会社)
    • ユーザー名:user-company
  • OSはWindows前提
  • SourceTreeを使用
  • Git for Windows(OpenSSH)を使用

user-person は個人アカウント名、user-companyは会社アカウント名にそれぞれ置き換えて作業して下さい。

Windows以外の場合は、下記のように置き換えて作業して下さい。

項目WindowsmacOSLinux
SSHキー保存場所C:\Users\<ユーザー>\.ssh~/.ssh~~/.ssh~
SSHクライアントOpenSSH(Git for Windows)OpenSSH(標準)OpenSSH(標準)
資格情報管理Windows Credential Manager /
Git Credential Manager
Keychainlibsecret /
gnome-keyring など
SourceTreeありあり基本的になし

1. SSHキーをアカウントごとに作成する

個人用

ssh-keygen -t ed25519 -C "GitHubの個人アカウントメールアドレス" -f ~/.ssh/id_ed25519_user-person

会社用

ssh-keygen -t ed25519 -C "GitHubの会社アカウントメールアドレス" -f ~/.ssh/id_ed25519_user-company

2. GitHubへ公開鍵を登録

公開鍵を表示する。(個人アカウントの場合)

cat ~/.ssh/id_ed25519_user-person.pub

表示された内容をコピーし、

GitHubの

Settings → SSH and GPG keys → New SSH key

から登録する。

会社アカウントも同様に登録する。


3. ~/.ssh/config を作成する

Host github-user-person
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_user-person
    IdentitiesOnly yes

Host github-user-company
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_user-company
    IdentitiesOnly yes

4. 接続確認

個人

ssh -T github-user-person

成功例

Hi user-person! You've successfully authenticated...

会社

ssh -T github-user-company

成功例

Hi user-company! You've successfully authenticated...

5. SourceTreeの設定

設定 → 全般 → SSHクライアント

OpenSSH を選択する。

※ PuTTYでは ~/.ssh/config が利用できない場合がある。


6. リモートURLをSSHへ変更

個人リポジトリ

git remote set-url origin git@github-user-person:user-person/リポジトリ名.git

確認

git remote -v

結果

origin  git@github-user-person:user-person/リポジトリ名.git (fetch)
origin  git@github-user-person:user-person/リポジトリ名.git (push)

会社リポジトリ

git remote set-url origin git@github-user-company:xxx/リポジトリ名.git

確認

git remote -v

結果

origin  git@github-user-company:xxx/リポジトリ名.git (fetch)
origin  git@github-user-company:xxx/リポジトリ名.git (push)

7. 動作確認

Git Bash

  • git fetch
  • git pull
  • git push

SourceTree

  • Fetch
  • Pull
  • Push

が正常に実行できることを確認する。


よくあるエラー

403 Permission denied

Permission to xxx denied to yyy.

原因

HTTPS認証で別アカウントが使用されている。

対策

SSH接続へ変更する。


Permission denied (publickey)

git@github.com: Permission denied (publickey)

原因

SSHキーが読み込まれていない。

対策

  • SSHキーをGitHubへ登録する
  • ~/.ssh/config を確認する
  • ssh -T github-xxxx が成功することを確認する

Host does not exist

Host does not exist

原因

SourceTreeが ~/.ssh/config を読んでいない。

対策

SSHクライアントを OpenSSH に変更する。


新しいリポジトリを追加するとき

個人

git remote set-url origin git@github-user-person:user-person/リポジトリ名.git

会社

git remote set-url origin git@github-user-company:xxx/リポジトリ名.git

便利な確認コマンド

現在のリモートURL

git remote -v

SSH接続確認(個人)

ssh -T github-user-person

SSH接続確認(会社)

ssh -T github-user-company

SSHキー一覧

ls ~/.ssh

SSH設定確認

cat ~/.ssh/config

完成イメージ

GitHub
├── user-person
│   └── id_ed25519_user-person
│
└── user-company
    └── id_ed25519_user-company

~/.ssh/config
├── github-user-person
└── github-user-company

SourceTree
└── OpenSSH

個人リポジトリ
└── git@github-user-person:user-person/xxxxx.git

会社リポジトリ
└── git@github-user-company:xxx/xxxxx.git

この構成にしておくことで、HTTPS認証の競合を避けながら、個人用・会社用のGitHubアカウントを安全に使い分けられる。