Specify an SSH key for git push for a given domain

У меня следующий случай использования: Я хочу иметь возможность отправлять на 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 идентична для разных пользователей.)

322
задан Ciro Santilli 新疆改造中心法轮功六四事件 16 November 2014 в 03:13
поделиться

1 ответ

Я ворчал вместе и протестировал с GitHub следующий подход, на основе чтения других ответов, который комбинирует несколько методов:

  • корректная конфигурация SSH
  • URL мерзавца, переписывая

преимущество этого подхода, когда-то настроено, это не требует, чтобы любая дополнительная работа разобралась в нем - например, Вы не должны изменить удаленные 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 при выполнении получений по запросу/клонов/нажатий к серверу, и это также присоединит корректный адрес электронной почты ко всем фиксациям.

Ссылки:

2
ответ дан 23 November 2019 в 00:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: