Переключение между несколькими SSH-ключами в Git на Windows - PullRequest
37 голосов
/ 12 марта 2012

Мне нужно иметь несколько ключей в моем клиенте для доступа к двум различным учетным записям на хостинге Repository. См. https://redefy.repositoryhosting.com/support -> Как управлять несколькими учетными записями с несколькими парами ключей на моем клиенте?

Я не понимаю, как переключаться между разными ssh-ключами в Git на Windows, кто-нибудь может мне помочь?

Ответы [ 4 ]

46 голосов
/ 13 марта 2012

Я предполагаю, что вы используете git bash и openssh.

Как и написано в статье, вы можете создать файл конфигурации для клиента ssh, в котором перечислены все ваши учетные записи.Вы можете записать следующую конфигурацию в свой собственный файл конфигурации клиента ssh в ~/.ssh/config

Host account-one
HostName server.example.com
User user-one
IdentityFile ~/.ssh/key-one

Host account-two
HostName server.example.com
User user-two
IdentityFile ~/.ssh/key-two

То, что он говорит, это то, что вы определяете два типа псевдонимов хоста с именами account-one и account-two.Если вы используете их, при установлении соединения клиент ssh будет использовать соответствующие HostName, User и IdentityFile для адреса сервера, имени пользователя и файла ключа ssh.Благодаря этому вы можете использовать их для доступа к своим учетным записям и ключам даже на одном и том же сервере.

В git вы можете определить два удаленных пользователя, используя их

$ git remote add one account-one:repository.git
$ git remote add two account-two:repository.git

, затем вы можете отправить их на эти пульты.

$ git push one master
$ git push two master
13 голосов
/ 13 марта 2012

Какой ключ используется для какого сервера обрабатывается программой SSH, которую git использует для подключения. В настройках по умолчанию это должен быть клиент командной строки SSH (openSSH?).

Используя openSSH, вы можете настроить определенные ключевые файлы для определенных хостов в файле ~/.ssh/config:

Host foo.example.com
  IdentityFile ~/.ssh/foo.example.com-id_rsa

Host bar.example.com
  IdentityFile ~/.ssh/bar.example.com-id_rsa

Где ~/.ssh/*.example.com-id_rsa - файлы закрытых ключей для каждого сервера.

Надеюсь, это поможет.

2 голосов
/ 13 марта 2012

В Windows вы должны попробовать Pageant SSH агент аутентификации для PuTTY, PSCP, PSFTP и Plink.Этот инструмент может управлять вашими SSH-ключами и их парольными фразами.Чтобы использовать его вместе с Git, вы должны установить Putty и установить ссылку на plink.exe, в которой установлена ​​переменная GIT_SSH.

  1. Установить Putty и друзей (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
  2. Установить GIT_SSH

    set GIT_SSH=<path-to-plink.exe>

  3. Запустите Pageant и добавьте свои ключи
  4. Запустите Git

hth Daniel

0 голосов
/ 12 марта 2012

Я отвечу на это немного косвенно. Ранее я использовал git bash и обнаружил, что когда я использую git через оболочку git bash, он ведет себя так же, как оболочка mac или linux bash. Это означает, что при использовании git bash я могу ответить на ваш вопрос следующим образом:

'Если вы используете git bash, вы можете управлять несколькими учетными записями так же, как если бы вы работали на Linux или Mac, используя ssh-agent / ssh-add и friends'

...