Post Bank

よわいエンジニアのブログ

Githubのアカウント切り替えに苦労した話

はじめに

仕事用にGithubのアカウントは持っていたが、プライベート用にもう一個アカウントを作って自由に切り替えられるようにしたかった。今までのアカウントは全部HTTPScloneとかpushしてたので、最初プライベートアカウントもHTTPSでやろうとしたけど、Permission Errorが出て解決できなかったので、プライベートはSSHでやることにした。
Permission Errorの原因は、ここに書いてあることっぽい。要は、Githubのcredential helperという認証情報を記憶する仕組みによって、仕事用のアカウントでプライベートアカウントにアクセスしようとしたのが原因。
以下には、SSHを設定する方法を記載する。

手順

いろんな方が既に記事にしてる通り、
1. ローカルでSSHキーペアを生成する
2. 生成したSSHキーの公開鍵をGithubに登録する
3. ~/.sshのconfigを編集する
4. リポジトリのconfigにユーザー名、メールアドレスを設定する

1. ローカルでSSHキーペアを生成する

以下のコマンドでSSHのキーペアを生成する。

cd ~/.ssh
ssh-keygen -t rsa -C [メールアドレス] -f [キーのファイル名]

2. 生成したSSHキーの公開鍵をGithubに登録する

サブアカウントGithubにログインして、以下のページのNew SSH keyから生成したSSHキーの公開鍵を登録する。
github.com
Titleの欄には、自分で後から見て判断しやすい名前を入力。
このコマンドで公開鍵の中身をクリップボードにコピー出来るので、Keyの欄にペースト。

cat ~/.ssh/[ファイル名].pub | pbcopy

3. ~/.sshのconfigを編集する

~/.ssh/configに以下を追記する。(なければ新規作成する。)

Host github.com
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/[1.で生成したSSHキーのファイル名(拡張子なし)]
  TCPKeepAlive yes
  IdentitiesOnly yes

ここの設定で最初1行目をHost github.com.privateと書いていたが、これだとSSHで通信できなかった。ここの記事にあるように、リモートリポジトリを設定するときにHost名を変えなきゃいけないらしい。今回はプライベートアカウントだけSSHキー登録したので、デフォルトのHost github.comにした。

4. リポジトリのconfigにユーザー名、メールアドレスを設定する

これでPermission errorで弾かれることはなくなったが、pushしてみると、仕事用のアカウント名でpushされるので、以下のコマンドでユーザー名とメールアドレスを登録する。このコマンドは、リポジトリ毎に打たないといけない。

git config user.name [プライベートアカウントのユーザー名]
git config user.email [プライベートアカウントのメールアドレス]

これでプライベートアカウントの設定は完了。

まとめ

SSH接続自体は今回初めてではなかったが、Githubに設定したのは初めてだった。少し勉強になった。

参考