副業のため複数のGithubアカウントを使う必要が出てきたので方法をまとめておきます。
手順
- Githubのアカウントを2つ作成
- それぞれのアカウントでレポジトリを作成する
- SSHキーをふたつ作成してそれぞれのGithubアカウントに登録
- -/.ssh/configに切り替え用の環境設定を記述
- 接続確認
- git cloneを実行
環境
項目 | 内容 |
---|---|
OS PC | M1 MAC |
環境 シェル | Vs Code内のzshシェル |
Githubのアカウント作成
アカウントの作成方法については割愛します。
自分はGmailでサブアカウント作ってそちらにGithub以外のSAAS諸々紐付けしています。こうしておくとメイン(私用)と副業の情報がGoogleアカウント毎に自然とまとまるので便利です。
SSHキーの生成から
ということでまずはSSH Keyの生成から、複数アカウント使う場合は区別するためにきちんと名前つけましょう。今回は一つ目のSSHキーを個人用に「github_main_rsa」、2個目のアカウントを副業用に「github_sub_rsa」とします。
cd ~/.ssh
ssh-keygen -t rsa
ssh-keygenコマンドを入れると都合3回入力を促される。2回目と3回目はお好みでいいので一回目だけ事前に決めておいた名前の「github_main_rsa」で入力する。この作業をサブアカの「github_sub_rsa」分も行います。
ちなみに1個目を何も入力しないと「id_rsa」という名前でSSHキーが作成されますが既に存在する場合は上書きされて接続済みSSH接続が動かなくなるので注意です。
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):id_sub_rsa #既存のファイル名とは異なる任意のファイル名を指定する
Enter passphrase (empty for no passphrase):
Enter same passphrase again
続けて2個目のアカウント向けにのSSHキーで名前を「github_sub_rsa」として作成します。
ssh-keygen -t rsa
GithubにSSHキーを登録する
こちらも詳細は割愛します。
前段の作業がうまくいっていれば「~/.ssh」ディレクトリに「github_main」「github_main.pub」「github_sub_rsa」「github_sub.pub」という4つのファイルができているはずなので「github_{xxx}.pub」の中身を開いてそれぞれのGithubアカウントのSSHキーに登録しましょう。
後述の接続テストで繋がらない場合はGithub登録がテレコになっているかconfigファイルの記述が間違っている可能性が高いです。
「~/.ssh」ディレクトリ配下のconfigファイルを修正
2つのアカウントを切り替えするための設定ファイルを記述します。下記のものそのままコピペして使う場合は修正点(1)〜(4)を変更するだけでOK。というか(1)〜(4)以外を変更すると接続できないです。
Host github_main #修正点(1)任意でOK
HostName github.com
IdentityFile ~/.ssh/github_main_rsa #修正点(2)先ほど作ったもSSHキーの生を指定
User git
Port 22
Host github_sub #修正点(3)任意でOK
HostName github.com
IdentityFile ~/.ssh/github_sub_rsa #修正点(4)先ほど作ったもSSHキーの生を指定
User git
Port 22
接続テスト
接続テスト行います、「github_main」と「github_sub」は前段のconfigファイルの修正でHostのところに設定したものを記載してください。無事接続できたら英語で「SSH接続でgithubに連携できたよ、だけどgthubはShellでのアクセスに対応してないよ」と出ます。
% ssh -T github_main
% ssh -T github_sub
git cloneする
ホスト名をconfigファイルで自分で記載したものに書き換えてgit cloneを実行します。正しく設定できていれば無事ローカルにディレクトリが生成されて複数アカウントでの接続成功です。
git clone git@「configに設定した一つ目のHost」:『メインアカウントのID』/「レポジトリ名」.git
git clone git@「configに設定した一つ目のHost」:『サブアカウントのID』/「レポジトリ名」.git
トラブルシュート
・使っているRSAを確認する
・id_rsaを上書きしていないか確認
・Clone時のホスト名を確認する
・Configに全角が入っていないか
参考サイト