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
.