URLを変えることなくアカウントごとにSSHキーを使い分ける
問題
- GitHubに作るリポジトリのSSHのURLは、git@github.com:user1/test20241228.git という形式で、user1 の部分がGitHubのユーザー名(または組織名)に相当する
- 複数アカウントがある時、URLを変えることなくSSHキーを使い分ける
解決方法
- 以下のように、SSHのconfigにアカウントごとのHost設定を用意してそれぞれのSSHキー(user1.key.pemなど)を指定する
- 次に、GitのconfigにアカウントのURLをinsteadOfでSSHのHost名に差し替えるように設定する
- これで、git clone git@github.com:user1/test20241228.git すると SSHキーは自動的に `user1.key.pem` が使われるようになる
~/.ssh/config
Host github.com
User git
IdentityFile ~/.ssh/default.key.pem
IdentitiesOnly yes
Host user1-github
HostName github.com
User git
IdentityFile ~/.ssh/user1.key.pem
IdentitiesOnly yes
Host user2-github
HostName github.com
User git
IdentityFile ~/.ssh/user2.key.pem
IdentitiesOnly yes
~/.config/git/config
[url "git@user1-github:user1/"]
insteadOf = git@github.com:user1/
[url "git@user2-github:user2/"]
insteadOf = git@github.com:user2/
補足
- なお、上記の場合、 git clone git@user1-github:user1/test20241228.git としても動作する
- が、URLが変わるのでやや面倒