Git нажатие на удаленный репозиторий GitHub как неправильный пользователь

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

Теперь я снова хотел создать новый репозиторий в своей личной учетной записи, я изменил глобальный и локальный user.name и сделал новую пару ключей ssh, введенную на странице настройки GitHub. Затем я установил каталог

git init
git remote add origin <url>
git push origin

но теперь это говорит мне

ОШИБКА: разрешение на персонализацию /newrepo.git запрещено

Я понятия не имею, как другая учетная запись связана с этим. .git/config не показывает связанных workusername вещей.

Ответ 1

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

Host work.github.com
    HostName github.com
    User WORK_GITHUB_USERNAME
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_work_rsa
    IdentitiesOnly yes

Host personal.github.com
    HostName github.com
    User PERSONAL_GITHUB_USERNAME 
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_personal_rsa
    IdentitiesOnly yes

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

Также стоит отметить, что Host URL - это просто указатель на то, чтобы захватить правильные пользовательские настройки и не влияет на правильное получение файлов на ваш целевой URL HostName.

Теперь вам просто нужно убедиться, что ваш origin (или любой remote в общем) URL-адрес соответствует правильному URL-адресу Host в ваших соответствующих репозиториях в зависимости от вашего имени пользователя. Если у вас уже есть личные репозитории, вы можете отредактировать этот файл repo .git/config в текстовом редакторе:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = [email protected]:PERSONAL_GITHUB_USERNAME/project.git

или сделать это через командную строку:

git remote set-url origin [email protected]:PERSONAL_GITHUB_USERNAME/project.git

Аналогично вашей работе:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = [email protected]:your_work_organization/project.git

или снова через командную строку:

git remote set-url origin [email protected]:your_work_organization/project.git

Конечно, вы всегда можете установить один из ваших URL-адресов Host в свой ~/.ssh/config файл как только

Host github.com

Я использовал work.github.com, чтобы легче видеть конфигурации конфигурации.

Как только все будет установлено, вы сможете нажать на каждый соответствующий пульт.

ИЗМЕНИТЬ

Одно замечание, что я только что узнал сам, заключается в том, что если вы когда-либо установили глобальные значения конфигурации git для вашего значения user.email (и я угадываю user.name также отправил бы другое значение), git покажет ваши коммиты в качестве этого пользователя электронной почты. Чтобы обойти это, вы можете переопределить глобальные настройки конфигурации git в своем локальном репозитории:

$ git config user.name "John Doe"
$ git config user.email [email protected]

Теперь вы должны отправить коммит как правильный пользователь для этого репо.

Ответ 2

github идентифицирует вас с помощью ssh-ключа, который он видит, а не по какой-либо настройке из git.

Следовательно, вам нужно убедиться, что ваш рабочий ключ ssh не находится в вашем ключевом ключе, когда вы пытаетесь нажать как свою личную учетную запись и наоборот. Используйте ssh-add -l, чтобы определить, какие ключи находятся в вашей цепочке, и ssh-add -d keyfile, чтобы удалить ключ из вашей ключевой строки.

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

Ответ 3

Вы также можете просто переключиться на https, а не на ssh. Если вы используете https, он будет соблюдать настройки .git/config. Итак, в .git/config, измените:

url = [email protected]:USER/PROJECT.git

к

url = https://[email protected]/USER/PROJECT.git

(эти значения находятся на странице проекта git, нажмите кнопки SSH и HTTP для новых значений);

Ответ 4

Перейдите в Панель управления > Учетные записи пользователей > Диспетчер учетных данных > Общие учетные данные

удалите учетные данные git. Затем запустите git push. Это вызовет запрос учетных данных git. Введите правильные учетные данные.

Ответ 5

Недавно у меня была такая же проблема, потому что я создал новую учетную запись github. Я попробовал ответы выше, но это не помогло. Затем я увидел сообщение где-то об удалении github из Keychain Access (только если вы используете mac). Когда я git нажмите, он попросит имя пользователя и пароль, и это сработало!

Ответ 6

У меня была та же проблема. Оказывается, у меня было две учетные записи на GitHub с использованием того же ключа SSH, и GitHub по умолчанию использовал неправильную учетную запись, которая не имела разрешения на репо, которое я был после. Я удалил ключ SSH из учетной записи, в которой я не использовал все работало, как ожидалось.

Вы можете проверить, какая учетная запись GitHub аутентифицируется самостоятельно:

ssh -T [email protected]

Для меня это изначально показало неправильное имя пользователя, но после удаления дубликата SSH-ключа из этой учетной записи, он показал правильное имя пользователя и мое нажатие и нажатие на мое репо работало хорошо.

Ответ 7

Это способ сделать это: вы можете использовать разные конфигурации ssh для разных учетных записей ssh.

Обновлено 22 февраля:

Посмотрите эту ссылку: https://gist.github.com/2351996

Ответ 8

Если изменение ключа SSH, связанного с учетной записью, не работает, измените адрес электронной почты, связанный с учетной записью.

Перейдите в Github > Настройки учетной записи > Электронная почта и проверьте, что адрес электронной почты, который вы используете для совершения, соответствует электронной почте в учетной записи.

Чтобы узнать, какой адрес электронной почты вы используете для совершения, выполните следующую команду: git config --global user.email. Если вам нужно изменить адрес электронной почты, который вы используете для совершения, запустите git config --global user.email "[email protected]".

Ответ 9

У меня такая же проблема. Ниже приводится то, что происходит в моем случае:

Я ранее делал git, чтобы не запрашивать мои учетные данные каждый раз, когда я общаюсь с удаленным репозиторием: git config --global credential.helper wincred

Я решил проблему, выполнив ту же команду с "none", заменив "wincred" git config --global credential.helper none

Затем git спросите мое имя пользователя/пароль еще раз, и все будет хорошо

Ответ 10

У меня была эта проблема, но ни один из других решений не работал у меня. Оказывается, для работы мы создали файл .netrc, в котором были записи для аутентификации github. Команда git всегда использовала .netrc, у которой было мое старое имя пользователя и пароль. Мне нужно было отредактировать записи в моем .netrc файле, чтобы использовать новое имя пользователя и пароль.

Ответ 11

Никогда не возникало проблем с git, пока на работе они недавно не подключили наши macbooks к Active Directory и не добавили несколько учетных записей администратора на мою машину. Однако после этого git будет работать нормально, пока я не закрою экран и не вернусь. Тогда я бы получил туманную ошибку, похожую на

No user exists for uid 1927040837
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

У меня есть только один ключ ssh на этой конкретной машине для моего пользователя, и я использую zsh в моем термине. Электронная почта и имя пользователя были правильными, так что это не было проблемой. Ergo, перезагрузка после каждого раза, когда я блокирую свою машину, бесполезен. Решение для меня состояло в том, чтобы отредактировать мой файл .zshrc и раскомментировать строку, которая экспортирует ssh-ключ (который мне никогда не приходилось делать раньше, и использовал zsh в течение многих лет).

Строка должна выглядеть примерно так:

# ssh
export SSH_KEY_PATH="~/.ssh/<your_rsa_id>"

После этого просто запустите reset в терминале, и все будет хорошо.

Надеюсь, это поможет кому-то другому.

Ответ 12

Хорошо, я потратил целый день, пытаясь заставить мои два аккаунта github работать правильно. Мне нужно как клонировать, совершать, так и нажимать на обоих. Поэтому, не зная всех концов и выходов, я заставил решение, которое, похоже, хорошо работает для меня.

По существу, я изменяю свой профиль git и ssh в соответствии с учетной записью, которую я буду использовать модально, пока я не переключусь снова.

Теперь у меня есть два аккаунта github, dhoerl и еще что-то. У меня есть отдельные файлы в моем .ssh каталоге для файла id_rsa. Мне пришлось ssh-add -D, затем ssh-add git_dhoerl и ssh-add theOtherOne.

У меня есть две команды оболочки, которые переключают меня из одного профиля в другой. Каждый выглядит следующим образом:

cd ~/.ssh
rm id_rsa

ln git_dhoerl id_rsa

git config --global user.email "myEmailAddr"
git config --global github.user "myAccountName"        
git config --global github.token "myToken"

Ответ 13

Я хотел бы добавить - если вы работаете с другой учетной записью пользователя, убедитесь, что вы добавили себя в область соавторов в настройках хранилищ.

Ответ 14

Я столкнулся с этой проблемой, и ни одно из вышеперечисленных решений не работало даже после того, как я удалил свой ssh-ключ и сделал новый. Оказывается, ssh-agent использует кешированный ключ, поэтому мне пришлось запускать killall ssh-agent, а затем он работал.

Нашел решение здесь. http://fzysqr.com/2012/08/28/quick-tip-wrong-ssh-key-cached-with-github-after-changing-users-and-keys/

Ответ 15

Я нашел временное решение, в котором сначала выполняется killall ssh-agent, затем добавьте ключи ssh, сгенерированные для учетной записи, которую вы должны использовать ssh-add ~/.ssh/id_4shameer

Это тот способ, которым мы можем работать с несколькими учетными записями github, когда мы получим ошибку типа ERROR: Permission to user/repo-git.git denied to username.