複数のリポジトリに、同じ公開鍵をDeploy keysに登録しようとすると"Key is already in use"って怒られます。というわけで、同じサーバであっても複数のリポジトリのデプロイが出来るように設定をする方法をメモっておきます。
複数の鍵を生成する
$ ssh-keygen -f ~/.ssh/repo_a
$ ssh-keygen -f ~/.ssh/repo_b
これで2つの公開鍵が生成されます。repo_a.pub
とrepo_b.pub
ですね。これらをGitHubのリポジトリDeploy keysに登録します。
SSH接続先の設定をする
生成した公開鍵をそれぞれ使い分けたいので、適当にホスト名を決めて設定をします。
~/.ssh/config
Host github-repo-a
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/repo_a
TCPKeepAlive yes
IdentitiesOnly yes
Host github-repo-b
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/repo_b
TCPKeepAlive yes
IdentitiesOnly yes
cloneする場合は、こんな感じでホスト名を置き換えてあげればOKです。簡単ですね。
$ git clone git@github-repo-a:example/repo-a.git
$ git clone git@github-repo-b:example/repo-b.git