GitHubでは、デプロイキーは1つのリポジトリにのみ関連付けられます。ですので、通常はリポジトリ毎に異なるSSHキーを作成してデプロイキーとします。
ここで困るのが、同じマシンで複数のリポジトリをデプロイしたい場合です。例えば複数サービスを同じVPSに共存させる場合や、同じサービスだけど複数のリポジトリがある、という場合などです。
GitHubの場合、ホスト名とSSHキーを関連付けるために~/.ssh/config
で以下のように指定しますが、単純に複数個指定してもうまくいきません。
Host github.com
Hostname github.com
User git
IdentityFile ~/.ssh/id_proj1
Host github.com
Hostname github.com
User git
IdentityFile ~/.ssh/id_proj2
> git clone [email protected]:tsu1980/proj2.git
ERROR: Repository not found.
fatal: The remote end hung up unexpectedly
同一マシンで複数デプロイキーを共存させる方法
そこで、以下のようにHost
の値を分けて定義し、Git URLも同じ値を指定してやるとうまく動きます。
Host github.com-proj1
Hostname github.com
User git
IdentityFile ~/.ssh/id_proj1
Host github.com-proj2
Hostname github.com
User git
IdentityFile ~/.ssh/id_proj2
> git clone [email protected]:tsu1980/proj2.git
Initialized empty Git repository in /var/projects/proj2/.git/
remote: Counting objects: 833, done.
remote: Compressing objects: 100% (480/480), done.
remote: Total 833 (delta 400), reused 748 (delta 315), pack-reused 0
Receiving objects: 100% (833/833), 800.30 KiB | 523 KiB/s, done.
Resolving deltas: 100% (400/400), done.
Host
の値とGit URLのホスト名部分を一致させることがポイントです。この例ではgithub.com-proj2
の部分になります。
cloneではなく既存リポジトリのURLを変更するにはgit remote set-url
を使ってください。