Ответ 1
(Я проголосовал за то, чтобы закрыть это как возможный дубликат, но я мог бы также добавить похожий ответ).
При использовании транспорта SSH GitHub идентифицирует вас как пользователя на основе ключа SSH, который вы используете для аутентификации. Таким образом, вы должны убедиться, что git использует один SSH-ключ для одного репозитория, а другой для другого.
Я собираюсь предположить, что:
- У вас есть учетная запись GitHub с именем
user1
, и вы добавили в эту учетную запись открытый ключ, соответствующий вашему локальному закрытому ключу/home/whoever/.ssh/id_rsa
. Скажем, что репозиторий, к которому вы хотите получить доступ какuser1
, находитсяuser1/whatever
в GitHub. - У вас есть вторая учетная запись GitHub с именем
user2
, и вы добавили в эту учетную запись открытый ключ, соответствующий вашему локальному закрытому ключу/home/whoever/.ssh/new/id_rsa
. Скажем, что репозиторий, который вам интересен какuser2
, находитсяuser2/whatever
в GitHub.
Самый простой способ справиться с этим - создать новый "remote" (то есть псевдоним для удаленного репозитория) для каждого репозитория, где имя хоста в каждом удаленном URL-адресе фактически является псевдонимом, который вы создали в ~/.ssh/config
. (Если этот файл конфигурации не существует, вам придется его создать.)
Например, одна запись в файле ~/.ssh/config
может выглядеть так:
Host github-as-user1
HostName github.com
User git
IdentityFile /home/whoever/.ssh/id_rsa
Затем вы можете добавить удаленный вызов gh-user1
, скажем, с помощью
git remote add gh-user1 [email protected]:user1/whatever.git
... а затем, если вы хотите нажать ветвь master
в репозиторий user1/whatever
на GitHub с помощью клавиши ~/.ssh/id_rsa
, вы можете просто сделать:
git push gh-user1 master
Чтобы направить другой пользователь (user2
) во второй репозиторий, вам нужно добавить второй псевдоним к файлу ~/.ssh/config
. Например:
Host gh-as-user2
HostName github.com
User git
IdentityFile /home/whoever/.ssh/new/id_rsa
Затем, чтобы нажать на этот второй репозиторий как на другого пользователя, вы можете просто сделать:
git push gh-user2 master