1台のパソコンでGithubの複数(2つ)のアカウントを使い分ける
を紐付けて使用していたが、プライベートパソコンで仕事用の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
4.公開鍵をGithubに登録する
Github上でAccount settings > SSH Keys > Add SSH key で登録。
- 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することができた。