#author("2024-12-28T12:39:02+09:00","default:ryuichi","ryuichi")
#author("2024-12-28T12:39:19+09:00","default:ryuichi","ryuichi")
* URLを変えることなくアカウントごとにSSHキーを使い分ける [#t30a0ac0]

** 問題 [#f0ff5498]

- GitHubに作るリポジトリのSSHのURLは、''git@github.com:user1/test20241228.git'' という形式で、'''user1''' の部分がGitHubのユーザー名(または組織名)に相当する
- GitHubに作るリポジトリのSSHのURLは、'''git@github.com:user1/test20241228.git''' という形式で、'''user1''' の部分がGitHubのユーザー名(または組織名)に相当する
- 複数アカウントがある時、URLを変えることなくSSHキーを使い分ける


** 解決方法 [#i638ad4c]

- 以下のように、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 [#ed33a4a7]
 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 [#kb183044]

 [url "git@user1-github:user1/"]
 	insteadOf = git@github.com:user1/
 [url "git@user2-github:user2/"]
 	insteadOf = git@github.com:user2/

** 補足 [#v6fb8eec]

- なお、上記の場合、 '''git clone git@user1-github:user1/test20241228.git''' としても動作する
- が、URLが変わるのでやや面倒

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