Пользователь, не добавленный в качестве соавтора, может отправлять / отправлять в частный репозиторий GitHub

#git #github #ssh-keys #git-push #git-pull

#git #github #ssh-ключи #git-push #git-pull

Вопрос:

У меня есть две учетные записи GitHub (скажем personnel , и work ). Я настроил свой ~/.ssh/config файл для работы с несколькими учетными записями. Я создал ssh-ключ для work учетной записи и добавил открытый ключ в свою work учетную запись GitHub.

Я создал учетную запись организации и создал частное репозиторий. Я могу клонировать / отправлять / извлекать из этого частного репозитория из своей work учетной записи. Каждый раз, когда я нажимаю / нажимаю, мне нужно ввести свой пароль, поэтому я добавил команду запуска ключа ssh ssh-add ~/.ssh/id_rsa_work , и я могу нажимать / тянуть, не вводя пароль снова и снова. Но проблема в том, что после запуска ssh-add ~/.ssh/id_rsa_work каким-то образом я могу клонировать / нажимать / извлекать этот частный репозиторий из своей personnel учетной записи, чего, я думаю, не должно происходить.

Я не уверен, что пошло не так, но было бы здорово, если бы кто-нибудь мог направить меня в правильном направлении и сказать мне, что я делаю неправильно. Не стесняйтесь запрашивать соответствующую информацию, если это необходимо (не эксперт по git / GitHub)

Сведения о файле конфигурации:

 #Default GitHub (personnel account)
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

#Work Github
Host github_work
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_work
  

Команда для добавления удаленной учетной pesonnel записи:

 git remote add origin git@github.com:Organisation/hello.git  
  

для work учетной записи:

 git remote add origin git@github_work:Organisation/hello.git 
  

Комментарии:

1. Вы должны были использовать github-COMPANY в качестве имени хоста вместо github.com , как описано в статье. Нет ssh-add в любое время.

2. @Ry- Да. Я использовал github-work (в моем случае) в качестве имени хоста. Все работает хорошо, пока я не запустил ssh-add ~/.ssh/id_rsa_work . Я получил эту идею из этой сути .

3. SSH попробует все ключи в агенте аутентификации ( ssh-add ). Такое поведение ожидается. Я бы рекомендовал использовать Git через HTTPS и использовать менеджер учетных данных Git вместо Git через SSH, потому что SSH не знает, какой репозиторий вы используете, а Git credential делает (с git config credential.useHttpPath true ).

4. @ephemient «Такое поведение ожидается» : Странно! Если personnel учетная запись не добавлена в качестве соавтора в частное репозиторий, она никогда не должна получать доступ к этому репозиторию, вот чего я ожидаю.

5. Для отладки проблем с ssh: run ssh -v github-personnel вы должны увидеть, какие ключи используются, в каком порядке. -vv и -vvv даст вам еще больше информации об отладке.

Ответ №1:

Во-первых, убедитесь, что на оба удаленных репозитория ссылаются URL-адреса SSH

 cd /paath/to/repo
git remote -v
  

Если один из них использует HTTPS, то он будет использовать учетные данные (имя пользователя / пароль), хранящиеся / кэшированные в вспомогательном хранилище учетных данных, в то время как другой будет использовать закрытый ключ, защищенный правильной парольной фразой.

Во-вторых, вы можете попробовать и протестировать тот же подход с закрытыми ключами, не защищенными парольной фразой, чтобы избежать необходимости иметь дело с ssh-agent, просто для тестирования.

Комментарии:

1. Я попробовал git remote -v . Оба используют git@github .

2. @haccks Тогда мне нужно содержимое ~/.ssh/config файла, а также точная команда, используемая для клонирования work частного репозитория с использованием personnal записи. (вы можете запутать фактическое имя пользователя / репозиторий)

3. Я обновил вопрос с деталями, которые вы просили.

4. @haccks OK: предложения: не использовать github.com как запись хоста. Используйте » personal «. Не используйте git@: никогда не упоминайте пользователя, он уже упоминается в каждой записи узла конфигурации. Итак, попробуйте git remote add origin personal:Organisation/hello.git и посмотрите, можете ли вы все еще получить доступ к репозиторию.