githubの認証は少し奇妙です。ユーザー名は使用しません。彼らはあなたがどのユーザーであるかをあなたが提示した公開鍵に基づいて推測するだけです。4つのデプロイキーを生成したので、サーバーがgithubに接続するときにどれがサーバーによって使用されるかは誰にもわかりません。githubはそれらのいずれかを受け入れ、そのキーが登録されていないリポジトリへのアクセスを拒否します。
そのため、最も簡単な解決策は、すべてのリポジトリに単一のデプロイキーを使用することです。
ただし、それができない場合は、sshホストエイリアスを使用してこれを回避できます。~/.ssh/config
次のようにサーバーのスタンザに追加します。
Host repo-foo
HostName ssh.github.com
Port 443
User git
IdentityFile /path/to/my-ssh-key-file-for-foo
IdentitiesOnly yes
Host repo-bar
HostName ssh.github.com
Port 443
User git
IdentityFile /path/to/my-ssh-key-file-for-bar
IdentitiesOnly yes
次に、フォームを使用するのではなく、サブモジュールをポイントしますrepo-bar:username/bar.git
。repo-foo:username/foo.git
git@github.com:...
これにより、gitとsshは各リポジトリを別のサーバー上にあるものとして効果的に扱い、明示的なIDファイルを渡すため、使用するキーについて混乱することはありません。