Git - система настроена для двух учетных записей, но git push использует неверную учетную запись - PullRequest
0 голосов
/ 02 февраля 2019

Когда я пытаюсь использовать git push origin RC-01, я получаю сообщение об ошибке:

ОШИБКА: доступ к user1 / repo1.git запрещен для user2.неустранимый: не удалось прочитать из удаленного хранилища.

Пожалуйста, убедитесь, что у вас есть правильные права доступа, и хранилище существует.

ввод git config -l дает

credential.helper=osxkeychain 
core.repositoryformatversion=0 
core.filemode=true 
core.bare=false 
core.logallrefupdates=true 
core.ignorecase=true 
core.precomposeunicode=true 
remote.origin.url=git@github.com-personal:user1/repo1.git 
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* 
branch.master.remote=origin branch.master.merge=refs/heads/master 
user.name=user1 
user.email=user1@hotmail.co.uk

и ~/.ssh/config имеет две записи:

# Work account (associates to user2)
Host github.com
 HostName github.com
 User git
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_rsa_work

# Personal account (associates to user1)
Host github.com-personal
 HostName github.com
 User git
 UseKeychain yes
 AddKeysToAgent yes
 IdentityFile ~/.ssh/id_rsa_personal

когда я делаю ssh -T git@github.com-personal, я получаю

Привет, user2!Вы успешно прошли аутентификацию, но GitHub не предоставляет доступ к оболочке.

Я не вижу, как выглядит user2 - должно быть user1 - Я подозреваю, что это моя проблема, но как мне это сделать?заставить команду push работать?

По предложению jingx добавлено ssh -Tv git@github.com-personal вывод:

$ ssh -Tv git@github.com-personal
OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Reading configuration data /Users/named/.ssh/config
debug1: /Users/named/.ssh/config line 10: Applying options for github.com-personal
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to github.com port 22.
debug1: Connection established.
debug1: identity file /Users/named/.ssh/id_rsa_personal type 0
debug1: Authenticating to github.com:22 as 'git'
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/named/.ssh/known_hosts:1
debug1: Authentication succeeded (publickey).
Authenticated to github.com ([140.82.118.3]:22).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: pledge: network
debug1: Sending environment.
debug1: Sending env LANG = en_GB.UTF-8
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
Hi user2! You've successfully authenticated, but GitHub does not provide shell access.
debug1: channel 0: free: client-session, nchannels 1
debug1: Exit status 1

1 Ответ

0 голосов
/ 02 февраля 2019

Когда вы используете ssh для подключения к GitHub, единственное имя пользователя , которое видит GitHub, это git:

ssh -T git@...

Так что GitHub нужно каким-то образомчтобы выяснить, кто вы.

То, как они используют, - это посмотреть на ключ , который вы предоставляете .Вы предоставили ключ от:

identity file /Users/named/.ssh/id_rsa_personal

У них есть гигантский стол с ключами и именами пользователей.Они просматривают свою таблицу ключей и находят тот, который соответствует ключу, который вы только что отправили, и он говорит: Этот ключ предназначен для пользователя user2.

Так вот, как GitHub знает, что выuser2: их таблица говорит об этом.

Чтобы обновить таблицу, используйте их веб-интерфейс.Скажите им: Вы знаете меня как пользователя X (вот мои учетные данные, чтобы доказать это).Теперь мой новый ключ, который вы никогда не видели, это Y .Они добавят запись Y = X в свою гигантскую таблицу каждого пользователя во вселенной.В следующий раз, когда кто-то заявит, что он пользователь git и предоставит ключ Y , они узнают, что этот человек действительно пользователь X .

Очевидно, что ключ, который вы предоставляете сейчас, тот же, который user2 дал им некоторое время назад и который они сохранили в своей гигантской таблице.(Сохраняют ли они как user2 , так и вас, я понятия не имею, но их поиск находит только user2, пока user2 не удалит этот ключ. Если user2 удалит его ключ, и они внезапноначните искать вас, это говорит нам о том, что в их гигантской таблице действительно есть обе записи сейчас - интересное доказательство, возможно, полезное в каком-то будущем векторе атаки GitHub, но не очень полезное для чего-либо немедленного.)

(Если вы используете https для подключения к GitHub, все это вообще не применимо - все это относится только к ssh.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...