2016-12-19 7 views
3

У меня есть несколько папок SSH конфигурации для различных систем, например:Скажите мерзавца, который SSH конфигурационный файл для использования

ssh -F ~/.ssh/system-a/config [email protected] 
ssh -F ~/.ssh/system-b/config [email protected] 

Каждая папка имеет конфигурационный файл и набор файлов идентичности как так

Host system-a 
    HostName <some_hostname> 
    User <some_username> 
    IdentityFile ~/.ssh/system-a/keys/system-a.pem 

Как скажите git использовать определенный файл конфигурации ssh или определенный ключ ssh при выполнении задач git?

В идеале я хотел бы сделать это за проект git, если смогу.

+0

http://superuser.com/questions/232373/how-to-tell-git-which-private-key-to-use рассказывает о том, как сообщить git, какой ключ ssh использовать. – therobinkim

+1

Возможный дубликат [Укажите ключ SSH для нажатия git для данного домена] (http://stackoverflow.com/questions/7927750/specify-an-ssh-key-for-git-push-for-a-given- domain) –

+1

@ therobinkim nope, в котором объясняется, как сделать сегмент для GitHub, а не как заставить git использовать определенный файл конфигурации. – 1615903

ответ

1

Как указал Андрейс Кайниковс и Якуе, можно использовать несколько файлов ssh-config с достаточно недавним git.

Однако, вы можете достичь практически тех же результатов с помощью одного файла SSH-конфигурации с несколькими configurationss, возможно, все, относящихся к одному реальному хозяину:

Host SOMELABEL 
    HostName <some_hostname> 
    User <some_username> 
    IdentityFile ~/.ssh/system-a/keys/system-a.pem 

Host OTHERLABEL 
    HostName <other_hostname> 
    User <other_username> 
    IdentityFile ~/.ssh/system-b/keys/system-a.pem 

, а затем клонировать операции РЕПО, как:

git clone SOMELABEL:foo/bar.git 
    git clone OTHERLABEL:frobnozzel.git 

Это будет использовать <some_username>@<some_hostname> с SSH-ключ в ~/.ssh/system-a/keys/system-a.pem для bar хранилище, в то время как он будет использовать <other_username>@<other_hostname> с ssh-ключ в ~/.ssh/system-b/keys/system-a.pem для frobnozzel репозиторий.

+0

@ AndrejsCainikovs i стенд исправлен (и обновил мой ответ); я все еще не понимаю * почему * несколько ssh-config-файлов были бы предпочтительнее одного (но, конечно, это зависит от @pfwd) –

+0

Конечно, имея только '~/.gitconfig' и' ~/.ssh/config' - это путь. Но я думаю, что OP попал в угловой футляр. Возможно, автоматизация тестирования или что-то еще ... –

+0

@ umläute Его так же, как я предпочитаю работать.Мне нравится иметь отдельные файлы конфигурации и каталоги для моих проектов, а не собирать их вместе. – pfwd

1

в командной строке:

git configcore.sshCommand "ssh -F ~/.ssh/system-a/config" 

или .git/config в локальном хранилище в разделе [core]:

sshCommand = "ssh -F ~/.ssh/system-a/config" 

Это работает только с мерзавца 2.10 и новее. В противном случае его необходимо настроить с помощью переменной окружения $GIT_SSH_COMMAND.

+1

@AndrejsCainikovs Спасибо за исправление. Я не нашел фактические примечания к выпуску, а у 2.9 эта функция не была. – Jakuje

1

мерзавец 2.10+

Проверить Jakuje answer.

мерзавец 2.9-

Использование core.gitproxy указывающего на специальный скрипт, который делает волшебство.

Смежные вопросы