GitHubで複数アカウントを使うときは複数のSSHの.pubを登録しなければなりません。

そしてconfigファイルに追記をして確認するという行為が必要です。

これを知っておけば、複数アカウントも億劫にならないので、紹介したいと思います。

この記事は

  1. SSH Keyの生成
  2. GitHubに登録
  3. configファイルに追記
  4. 通信確認
  5. GitHubにPushするときに設定すること
  6. 余談

という流れで書いてあります。

実行環境はMac, Linuxを想定しています。

適時読み替えてください。

1. SSH Keyの生成

まずはSSHのKeyを生成します。

1
2
3
4
5
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "${email}" -f ${key name}
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

これはあまり使うコマンドではないので忘れている方も多いと思います。

例えば${key name}をgithub_test_rsaとすると以下のように生成されていると思います。

1
2
3
4
5
6
$ pwd
/Users/${username}/.ssh
$ ls
config
github_test_rsa.pub
github_test_rsa

2. GitHubに登録

先ほど生成したgithub_test_rsa.pubのファイルの中身をコピーします。

1
2
3
$ pwd
/Users/${username}/.ssh
$ pbcopy < github_test_rsa.pub

pbcopyはファイルの中身をクリップボードにコピーしてくれるコマンドです。

他にも

1
2
3
4
$ pwd
/Users/${username}/.ssh
$ cat github_test_rsa.pub
# github_test_rsa.pubの中身が出力されるので、コピーする

とかでも良いかと思います。

ではこれをGitHubのアカウントに登録します。

まずはログインしてください。

ScreenShot07

そして右上の歯車のアイコンをクリックしてSettingsのページへ遷移してください。

以下の画面になると思います。

ScreenShot08

左のメニューにあるSSH keysをクリックしてAdd SSH keyのボタンをクリックしてください。

フォームが表示されるので

  • Title

    わかりやすい名前を入力してください。出来る限りアルファベットがよろしいかと。

  • Key

    先ほどコピーしたものを貼付けます。Ctrl + VとかCmd + Vとか右クリックでも良いので貼付けてください。

入力が完了したらAdd keyを押して登録してください。

これでSSH keyの登録が完了しました。

次に通信してみます。

3. configファイルに追記

先ほど生成したSSH keyを使用するためにconfigファイルにHost情報を追記します。

configファイルは~/.sshディレクトリの中にあると思います。

もしなければ作成してください。

config
1
2
3
4
5
6
7
Host ${わかりやすい名前}
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/${生成したkey name} # github_test_ras
TCPKeepAlive yes
IdentitiesOnly yes

これで大丈夫です。

4. 通信確認

通信確認します。

1
2
$ ssh -T ${Hostに指定した名前}
Hi ${github username} You've successfully authenticated, but GitHub does not provide shell access.

この用に出力されれば通信成功です。

5. GitHubにPushするときに設定すること

GitHubにPushする時にoriginなどを指定すると思います。

GitHubでレポジトリを作成したときのやつをコピペすれば以下のようなURLになっていると思います。

1
git@github.com:${username}/${repository name}.git

これを変えなくてはなりません。

以下のコマンドで変えられます。

1
$ git remote set-url origin git@${Hostで指定した値}:${username}/${repository name}.git

値が変わったかどうかは以下のファイルで確認できます。

1
2
3
4
5
6
$ cat .git/config
~ 省略 ~
[remote "origin"]
url = git@${Hostで指定した値}:${username}/${repository name}.git
fetch = +refs/heads/*:refs/remotes/origin/*
~ 省略 ~

ここの値がしっかり変わっていれば大丈夫です。

変わっていなかったら、.git/configファイルの上記の部分を直接書き換えてしまいましょう。

これでPushとかPullとか出来るようになったと思います。

6. 余談

GitHubのアカウントを複数持っているとcommitをするときにcommitするユーザーをいちいち気にするのもめんどくさいですよね?

なのでいつも僕はGitHubで新規のレポジトリを作ったら、一緒にアカウントの設定もします。

1
2
$ git config user.name ${username}
$ git config user.email ${email}

これをしとけば、違うアカウントでcommitしちゃったなんてこともなくなると思います。

ちなみこの値も.git/configの中に保存されているので、直接編集することも出来ます。

よかったら試してみてください。

以上です。

参考

【メモ】githubの複数アカウントにSSH接続するための設定手順 | Developers.IO