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が変わるのでやや面倒

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2024-12-28 (土) 12:39:19