1台のパソコンでGithubの複数(2つ)のアカウントを使い分ける

を紐付けて使用していたが、プライベートパソコンで仕事用のGithubアカウント
サブアカウント)を使って仕事をすることになったので、設定をしてみた。

前提:GitとGithubメインアカウント)を設定済み

1.メインアカウント用の鍵を確認

.sshディレクトリに移動して、中身を見ておく。

$ cd ~/.ssh/
$ ls
# id_rsa   id_rsa.pub

メインアカウントを設定しているので、 id_rsa秘密鍵id_rsa.pub(公開鍵) がある。

2.サブアカウント用に鍵を作成

注意点:コマンドのオプション-fでファイル名を指定してファイルが上書きされないようにする。今回はgithub_work_rsaというファイル名にした。

$ ssh-keygen -t rsa -C "my_email@my_email.com" -f github_work_rsa
//ssh-keygen -t rsa -C "your_email@youremail.com" -f [file name]
# Generating public/private rsa key pair.
# Enter passphrase (empty for no passphrase):

今回はパスフレーズはなしで。ということで、Enterを押す。

# Enter same passphrase again:

もう1回Enter。

Your identification has been saved in github_work_rsa.
Your public key has been saved in github_work_rsa.pub.
The key fingerprint is:
a3:89:47:4b:64:3f:95:f9:60:1e:f4:e4:d2:d5:5b:bb my_email@myemail.com
The key's randomart image is:
+--[ RSA 2048]----+
|          . . .. |
|         . B .  o|
|      o   O +   +|
|     o . + =   o |
|      o S . .   .|
|     + + o     E |
|    . =          |
|     .           |
|                 |
+-----------------+

生成された!

3.生成された鍵を確認&コピーする

確認

$ ls
# github_work_rsa     github_work_rsa.pub     id_rsa      id_rsa.pub

github_work_rsa秘密鍵)とgithub_work_rsa.pub(公開鍵)ができている。

コピー

$ cat ~/.ssh/github_work_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCitU3Vv/M4W/KJpn8cvTuDY2ViVtdimTzCi0LuLRBrtpmYD2oKdR8CW1u73tJGkl7fr1oR9hH7JCYWnyosXTYQrrV+EjsL6K+iN3/fdM5uMZ6vsspcxcLBKk37pmsQmaJ8cV/Q1GO+9K2sCt2bi8WwZfEtMTjriV8rewsCzHpExbwoiY5lILy4c7I0uUk6OVRxoBKrekViqGAfKHijyVFQGwjMfRn4fIPLFxsAYM73Sbt3C1FIaP4nmN1gTzoohgFB0h0afm0yZ76jxxfWhB/LdPxRFh9NdN3BibBF6CH0rpU6/H93pJL3AEKiGk33oiM49R7qFKpqTkvg7NXi2NuR my_email@myemail.com

ssh-rsa〜以下をコピーする。

4.公開鍵をGithubに登録する

Github上でAccount settings > SSH Keys > Add SSH key で登録。

f:id:kgmx:20140404004604p:plain

  • Title: 何のKeyかわかるように書いておく。
  • Key: 先ほどコピーしたkeyをそのまま貼り付ける。

5.configファイル内でHostを指定する

$ vi ~/.ssh/config
Host github-[Githubアカウント名]
  User git
  Port 22
  HostName github.com
  IdentityFile ~/.ssh/github_work_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes

:wpで保存する。

6.接続できるか確認する

$ ssh -T github-[Githubアカウント名]
Hi [Githubアカウント名]! You've successfully authenticated, but GitHub does not provide shell access.

と出たら成功。

7.リポジトリにアクセスしてみる

注意点リポジトリにアクセスする時は、接続URLのhostをSSH config内で指定した通り
に変更する

通常、test-repoという名前のリポジトリURLは以下となる。

$ git@github.com:[Githubアカウント名]/test-repo.git
//git@[HostName]:[Githubアカウント名]/[リポジトリ名].git

今回は、[HostName]をSSH config内で指定したHost名にする。

git@github-[Githubアカウント名]: [Githubアカウント名]/test-repo.git

cloneする時などは、注意が必要。

git clone git@github-[Githubアカウント名]: [Githubアカウント名]/test-repo.git

8.サブアカウントでpushする

pushする時には、メールアドレスでGithubアカウントが特定される模様。
それを知らず、仕事用のリポジトリでpushしたところ、メインアカウントでpushしていた。 サブアカウントでpushしたい場合は、ローカルリポジトリのメールアドレスをサブアカウントのものに設定し、ユーザー名もサブアカウントGithubアカウント名にしておく。

$ git config --add user.email my_email@myemail.com
$ git config --global user.name "[Githubアカウント名]"

再度pushしてみると、サブアカウントでpushすることができた。