サブアカウントの秘密鍵と公開鍵を作る
sub
という名前の秘密鍵と公開鍵を作成します。
メールアドレスの部分は適宜変更してください。
$ ssh-keygen -t ed25519 -N "" -f ~/.ssh/sub -C "GitHubに登録したサブアカウントのメールアドレス"
~/.ssh
の配下に二つめの秘密鍵が出来上がりました。
$ ls ~/.ssh
id_rsa id_rsa.pub known_hosts sub sub.pub
GitHubに公開鍵を登録
まずは公開鍵の中身をクリップボードにコピーします。
$ pbcopy < ~/.ssh/sub.pub
GitHubのサブアカウントにログインしてSettings > SSH and GPG keysに進みます。
New SSH key をクリックしてTitleとKeyを入力します。
Titleはなんでもいいですが、私はデバイス名を書いています。Keyに先ほどコピーした公開鍵の中身をそのままペーストします。
入力できたらAdd SSH keyのボタンを押して保存しましょう。
sshのconfigファイル作成
~/.ssh/configというファイルを作成します。
$ vim ~/.ssh/config
Host名とUser、IdentityFileをそれぞれ入力します。
Host github # メイン用の名前
HostName github.com
User main-user # メインアカウントのユーザー名
IdentityFile ~/.ssh/id_rsa # メインアカウントの秘密鍵
IdentitiesOnly yes
Host github-sub # サブ用の名前
HostName github.com
User sub-user # サブアカウントのユーザー名
IdentityFile ~/.ssh/sub # サブアカウントの秘密鍵
IdentitiesOnly yes
入力内容を保存したら接続テストをします。
うまくいけば下記のように表示されます。
$ ssh -T git@github
Hi main-user! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@github-sub
Hi sub-user! You've successfully authenticated, but GitHub does not provide shell access.
git@
の後ろをconfigに登録している名前で指定するとサブアカウントでもgit clone
ができるようになります。
$ git clone git@github-sub:{githubのID}/{リポジトリ名}.git
ちなみにメインアカウントは今まで通りで大丈夫です。
$ git clone git@github.com:{githubのID}/{リポジトリ名}.git
gitconfigの編集
.gitconfig
でディレクトリごとの設定を分けます。
作業しているディレクトリ内でGitHubアカウントを自動で認識させるものです。
~/.gitconfig
と同じ階層に.gitconfig-main
と.gitconfig-sub
を作成します。
.gitconfig-main
まずは.gitconfig-main
を作成します。
ここにはメインで使用するGitHubのユーザー情報を記載します。
[user]
name = user_name # メインアカウントのユーザー名
email = xxxxxxxx@gmail.com # メインアカウントのメールアドレス
続いて.gitconfig-sub
を作成します。こちらにはサブアカウントのGitHubユーザー情報を記載します。
[user]
name = sub_user_name # サブアカウントのユーザー名
email = xxxxxxxx@gmail.com # サブアカウントのメールアドレス
.gitconfigに作業ディレクトリごとに読み込むファイルを追記します。
[user]
[includeIf "gitdir:/user/workspace-main/"]
path = ~/.gitconfig_main
[includeIf "gitdir:/user/workspace-sub/"]
path = ~/.gitconfig_sub
これで作業ディレクトリ下でgit cloneしたリポジトリ内で設定したユーザー情報が確認できていればOKです!(一覧がたくさん出るので探してみてください)
$ cd /user/workspace-sub/my-repository/
$ git config --list
user.name=sub_user_name
user.email=xxxxxxxx@gmail.com
.gitconfigに指定していないリポジトリではメインアカウントのほうが取得されていたので、メインアカウントは作業ディレクトリの指定をしなくてもいいかもしれません・・・?
こちらは情報不足なので分かり次第更新したいと思います。
参考にしたサイト
ありがとうございました!