У меня следующий случай использования: Я хочу иметь возможность отправлять на git@git.company.com:gitolite-admin
с помощью закрытого ключа пользователя gitolite-admin
, в то время как я хочу отправлять на git@git.company.com:some_repo
с помощью "моего собственного" закрытого ключа. AFAIK, я не могу решить эту проблему, используя ~/.ssh/config
, потому что имя пользователя и имя сервера идентичны в обоих случаях. Поскольку я в основном использую свой собственный закрытый ключ, он определен в ~/.ssh/config
для git@git.company.com
. Кто-нибудь знает способ переопределить ключ, который используется для одного git
вызова?
(Примечание: gitolite различает, кто делает push, на основе ключа, поэтому с точки зрения доступа, владения и аудита не проблема, что строка user@server идентична для разных пользователей.)
Я ворчал вместе и протестировал с GitHub следующий подход, на основе чтения других ответов, который комбинирует несколько методов:
преимущество этого подхода, когда-то настроено, это не требует, чтобы любая дополнительная работа разобралась в нем - например, Вы не должны изменить удаленные URL или не забыть клонировать вещи по-другому - перезапись URL заставляет все это работать.
~/.ssh/config
# Personal GitHub
Host github.com
HostName github.com
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/github_id_rsa
# Work GitHub
Host github-work
HostName github.com
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/work_github_id_rsa
Host *
IdentitiesOnly yes
~/.gitconfig
[user]
name = My Name
email = personal@personal.email
[includeIf "gitdir:~/dev/work/"]
path = ~/dev/work/.gitconfig
[url "github-work:work-github-org/"]
insteadOf = git@github.com:work-github-org/
~/dev/work/.gitconfig
[user]
email = work@work.email
, пока Вы сохраняете всю свою работу repos под ~/dev/work и персональным материалом в другом месте, мерзавец будет использовать корректный ключ SSH при выполнении получений по запросу/клонов/нажатий к серверу, и это также присоединит корректный адрес электронной почты ко всем фиксациям.
Ссылки: