Ответ 1
Проверка подлинности github немного нечетна. Они не используют имена пользователей; они просто выходят на основе открытого ключа, который вы представили пользователю. Поскольку вы создали четыре ключа развертывания, каждый может предположить, какой из них будет использоваться вашим сервером, когда он подключится к github-github, примет любой из них, а затем отклонит любой доступ к репозиториям, которые не имеют зарегистрированного ключа.
Таким образом, самым простым решением является просто использовать один ключ развертывания для всех репозиториев.
Если вы не можете, вы можете взломать это, используя псевдонимы хостов ssh. Добавьте на свой сервер ~/.ssh/config
stanzas, как показано ниже:
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
, а не на форму [email protected]:...
.
Это приведет к тому, что git и ssh будут обрабатывать каждый репозиторий как живой на другом сервере и передавать в явный файл идентификатора, поэтому нет путаницы в отношении того, какой ключ использовать.