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以外の場合は、下記のように置き換えて作業して下さい。
| 項目 | Windows | macOS | Linux |
|---|---|---|---|
| SSHキー保存場所 | C:\Users\<ユーザー>\.ssh | ~/.ssh~ | ~/.ssh~ |
| SSHクライアント | OpenSSH(Git for Windows) | OpenSSH(標準) | OpenSSH(標準) |
| 資格情報管理 | Windows Credential Manager / Git Credential Manager | Keychain | libsecret / 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-company2. 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 yes4. 接続確認
個人
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 -vSSH接続確認(個人)
ssh -T github-user-personSSH接続確認(会社)
ssh -T github-user-companySSHキー一覧
ls ~/.sshSSH設定確認
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アカウントを安全に使い分けられる。