GitHubで複数アカウントを使い分けようとしたら、どの記事も小出しにしか情報を出していなかったため
(初心者なので全部教えてもらわないとできないため)
包括的にまとめます。
今後はSSHでアクセスしようと覚悟を決める
あれです。git cloneとかするとき、何も考えずHTTPSでやってたアクセス方式です。
これからは、「Use SSH」ボタンをクリックして、SSH接続しましょう。
SSHとは?
そもそもHTTPSとSSHの違いは何でしょうか。
この問題は、HTTPSはHTTPというテキストデータをSSLという暗号技術によってセキュアにしていることから(HTTPS←HTTP+SSL)、SSLとSSHの違いに置き換えることができます。
←初心者はそもそもここからわからない。しかもSSLとSSHの名前似すぎ。
これに関しては、以下の記事などで詳しく書かれています。
SSHの鍵を作成し、GitHubに登録する
SSH鍵の作成方法について、色々な方がまとめてくださっています。
個人的に一番わかりやすかったのは以下の記事です。
補足として、SSH鍵自体はGitHub以外でも使うことがあるらしいので、ターミナルで作成することができます。
作成されるとホームディレクトリ(ターミナル立ち上げ時のカレントディレクトリ)に「.ssh」という隠しファイルができます。
この中にある「config」というのがとてつもなく大事なファイルです。
もし、2つのアカウント(仕事用とプライベート用)を使い分けたいのであれば、以下の構成がおすすめです。
.ssh/
┣config
┣private/
┣id_rsa
┗id_rsa.pub
┗job/
┣id_rsa
┗id_rsa.pub
上記リンクの補足として、ssh鍵をコピーするときは=mail@hoge.com
のイコールマークまでコピーしましょう。
sshキー情報を.ssh/configに設定する
次のステップは、以下の記事が秀逸です。
configファイルの変更は、私の場合ターミナルでvimコマンドで編集しました。
vimにまだ慣れていない方は、ググってみてください。とりあえずiとwq使えばなんとかなります。
% vim ~/.ssh/config
以下のように設定しました。
Host github github.com
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/git_job/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
Host github-sub github-sub.com
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/git_private/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
私の場合は「IdentityFile」のスペルが違ってずっと接続できませんでした…
接続の確認
以下のsshコマンドで、正しくGitHubと両アカウントが接続できるか確認できます。
# メイン
$ ssh -T git@github.com
# サブ
$ ssh -T git@github-sub.com
以下のように表示されれば、一見ダメなように見えますが大丈夫です。
Hi (User ID)! You've successfully authenticated, but GitHub does not provide shell access.
GitHubで操作!
以上で複数アカウントを使い分けることができますが、以下のように操作時のコマンドを変えないといけません。
以下のように、サブアカウント(プライベート用アカウント)を利用する場合はgit@以下をgithub-subとする必要があります。
# メイン
$ git remote add origin git@github:<ACCOUNT_NAME>/<YOUR_REPSITORY>.git
# サブ
$ git remote add origin git@github-sub:<ACCOUNT_NAME>/<YOUR_REPSITORY>.git
後は以下の記事の要領で、git configを変更しておけばOKです。
それでもエラーが出る場合
上記手順で上手くいかなかった場合、以下の記事が参考になるかもしれません。