Несколько учетных записей github - клонирование через S SH, но изменение пути HOST все еще работает? - PullRequest
0 голосов
/ 14 марта 2020

У меня есть несколько учетных записей GitHub, один для личного и один для работы.

В моем .ssh / config

# personal account
Host github.com
    HostName github.com
    User git
    AddKeysToAgent yes
    UseKeychain yes
    IdentityFile ~/.ssh/id_rsa

#work account
Host work.github.com
    HostName github.com
    User git
    AddKeysToAgent yes
    UseKeychain yes  
    IdentityFile ~/.ssh/id_rsa_work

У меня есть несколько вопросов:

  1. для моей рабочей учетной записи, у меня не может быть Host github.com, потому что это уже используется в моем личном кабинете, правда? Таким образом, чтобы дифференцировать, мне нужно было сделать Host work.github.com? почему?
  2. почему я все еще могу S SH, если я изменяю sh URL репозитория GitHub, добавив work.github.com

Оригинал репо было

git@github.com:work-company-projects/work-repo.git

Клонирование это сработало бы, но я не смог достать. Я получаю сообщение об ошибке о необходимости доступа.

Но как только я клонировал с этим новым S SH:

git@work.github.com:work-company-projects/work-repo.git

Это сработало. Мой git remote -v является подписчиком хоста work.github.com. Я бы подумал, что мне нужно сохранить тот же хост, @ github.com, но изменение тоже работает? Почему?

1 Ответ

1 голос
/ 14 марта 2020

для моей рабочей учетной записи, у меня не может быть Host github.com, потому что он уже используется в моей личной учетной записи, верно? Так что для разграничения мне нужно было сделать Host work.github.com? почему?

При подключении к Github через s sh все используют одного и того же пользователя, git. Пользователи идентифицируются по их ключу s sh. Если у вас есть несколько учетных записей Github, для каждой учетной записи требуется отдельный ключ s sh.

Обратите внимание, что для Github Organizations нет технической причины иметь отдельные личные и рабочие учетные записи.

почему я все еще могу S SH, если я изменю sh URL репозитория GitHub, добавив work.github.com

You ' мы настроили S SH на использование другого ключа в зависимости от того, с каким хостом вы запрашиваете для подключения, но s sh все равно будет подключаться к github.com. Это небольшая хитрость. S SH настраивается для каждого хоста, поэтому вы создали хост work.github.com.

Когда вы говорите, что хотите подключиться к github.com, вы настроили s sh для подключения к github.com и используйте свой ключ в ~/.ssh/id_rsa.

Когда вы говорите, что хотите подключиться к work.github.com, вы настроили s sh для фактического подключения к github.com, это то, что делает HostName github.com, и используйте ваш рабочий ключ ~/.ssh/id_rsa_work.

Так что git@work.github.com:work-company-projects/work-repo.git действительно подключается к github.com.

# tell ssh about work.github.com
Host work.github.com
    # When you ask to connect to work.github.com, connect to github.com instead.
    HostName github.com       
    # connect as the git user
    User git                  
    # add your key to the ssh-agent so yodon't have to keep retyping your password
    AddKeysToAgent yes
    # Get your ssh key password from your OS's keychain.
    UseKeychain yes
    # Use your work key
    IdentityFile ~/.ssh/id_rsa_work
...