Знаменитая ошибка в Git: «Отказано в разрешении пользователю .git» - PullRequest
100 голосов
/ 17 марта 2011

Я попробовал поискать в Google и прочитал http://help.github.com/troubleshooting-ssh/ и различные руководства.Я не могу набрать git push -u origin master или git push origin master (та же команда).

У меня был аккаунт git не менее 2 лет.Я успешно смог создать репозитории и push -u origin master отлично на моем ноутбуке, но на этом рабочем столе у ​​меня проблемы.

Вот что я попробовал:

1. Я настроил свое имя пользователя git

2. Я настроил свою электронную почту пользователя git

3. Я загрузил содержимоемой /home/meder/.ssh/id_rsa.pub на страницу аккаунта github.Я подтвердил, что не вставлял пробелы

4. Я создал ~ / .ssh / config со следующим содержимым:

  Host github.com
  User git
  Hostname github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

Я chmodded.sh до 700, id_rsa 600

5. Я добавил правильный удаленный источник без опечаток : git remote add origin git@github.com:medero/cho.git

6. Чтобы подтвердить # 5, вот мой .git / config.Каталог правильный , а не другой каталог:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@github.com:medero/cho.git

7. ssh git@github.com -v дает мне успешную аутентификацию

8 Одна странность в том, что к имени пользователя, с которым он встречает меня, добавлено t.Моё имя пользователя на github medero, а не medert.

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

9. Я не за прокси или брандмауэром

10. Ключ предлагается, вот вывод от -v:

debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/meder/.ssh/known_hosts:58
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/meder/.ssh/id_rsa
debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: { some stuff, dont know if i should share it

debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).

11. Вот команды, которые яused

mkdir cho
git init
touch README
git add README
git commit -m 'test'
git remote add origin git@github.com:medero/cho.git
git push -u origin master

12. Я не хочу создавать новый ключ SSH.

13. Если я получаю клон с помощью sshи сделать правку, фиксацию и толчок git, я получаю точно такую ​​же вещь.

14. Вот фактическая ошибка:

$ git push
ERROR: Permission to medero/cho.git denied to mederot.
fatal: The remote end hung up unexpectedly

15. Я настроил свое имя пользователя github и токен github:

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789token Устанавливает токен GitHub для всех экземпляров git в системе.

16. Я подтвердил, что мое имя пользователя github НЕ mederot, и мой токен github ПРАВИЛЬЕН для каждой страницы моего аккаунта (проверены первые 2 символа и последние 2 символа).

17. Для подтверждения # 16, ~ / .gitconfig содержит

[github]
    token = mytoken...
    user = medero

18. Я сделал ssh-key add ~/.ssh/id_rsa, если это даже необходимо...



ТЕОРИИ:

Я подозреваю, что есть что-то подозрительное, потому что когда я получаю ssh-аутентификацию, приветствие пользователя будет mederot, а не medero, что является моим актом.Возможно, что-то в моей учетной записи GitHub может быть неправильно кэшировано?

Я также подозреваю, что некоторые странные странности SSH-кэширования, потому что если я mv ~/.ssh/id_rsa KAKA и mv ~/.ssh/id_rsa.pub POOPOO, и делать ssh git@github.com -v, он все еще аутентифицирует меня и говорит, что он служитмой /home/meder/.ssh/id_rsa, когда я его переименовал ?!Это должно быть в кеше?!

Ответы [ 13 ]

143 голосов
/ 23 июня 2015

После нескольких дней поиска в Google я обнаружил, что это единственный вопрос, похожий на мою ситуацию.

Однако я только что решил проблему! Поэтому я размещаю здесь свой ответ, чтобы помочь кому-либо еще в поиске этой проблемы.

Вот что я сделал:

  1. Открыть "Keychain Access.app" (его можно найти в Spotlight или LaunchPad)

  2. Выбрать "Все товары" в категории

  3. Поиск "git"

  4. Удалить все старые и странные вещи

  5. Попробуйте нажать еще раз, и он просто работал

72 голосов
/ 01 декабря 2016

Если проблема возникает в Windows, удалите учетные данные из истории Windows.

  • Перейти к диспетчеру учетных данных
  • Перейти к учетным данным Windows
  • Удалить записи под общими учетными данными
  • Попробуйте подключиться снова. На этот раз вам будет предложено ввести правильное имя пользователя и пароль.

enter image description here enter image description here

удалить учетные данные из git

33 голосов
/ 17 марта 2011

На шаге 18 я предполагаю, что вы имеете в виду ssh-add ~/.ssh/id_rsa?Если это так, это объясняет это:

Я также подозреваю некоторую странную странность SSH-кэширования, потому что если я mv ~ / .ssh / id_rsa KAKA и mv ~ / .ssh / id_rsa.pub POOPOO, и сделаю sshgit@github.com -v, он все еще аутентифицирует меня и говорит, что обслуживает мой /home/meder/.ssh/id_rsa, когда я его переименовал ?!Он должен быть кэширован?!

... поскольку ssh-agent кэширует ваш ключ.

Если вы посмотрите на GitHub, есть mederot учетная запись.Вы уверены, что это не имеет к вам никакого отношения?GitHub не должен разрешать добавление одного и того же открытого ключа SSH к двум учетным записям, поскольку при использовании URL-адресов git@github.com:... он идентифицирует пользователя на основе ключа SSH.(То, что это не должно быть разрешено, подтверждается здесь .)

Итак, я подозреваю (в порядке убывания вероятности), что имеет место одно из следующих действий:

  1. Вы ранее создали учетную запись mederot и добавили к ней свой SSH-ключ.
  2. Кто-то получил копию вашего открытого ключа и добавил ее в учетную запись mederot GitHub.
  3. Естьужасная ошибка в GitHub.

Если 1 не так, то я бы сообщил об этом в GitHub, чтобы они могли проверить около 2 или 3.

Подробнее:

ssh-add -l проверить, существует ли более одного идентификатора, если да, удалите его с помощью ssh-add -d "этот файл ключей"

12 голосов
/ 11 ноября 2011

Это из-за конфликта.

Очистить все ключи от ssh-agent

ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github

Добавьте ключ github ssh

ssh-add   ~/.ssh/github

Теперь должно работать.

7 голосов
/ 12 ноября 2017

На Mac, если у вас несколько входов в GitHub и не с использованием SSH, принудительно введите правильный вход в систему с помощью:

git remote set-url origin https://username@github.com/username/repo-name.git

Это также работает, если у вас возникают проблемы с нажатиемв частный репозиторий.

6 голосов
/ 19 февраля 2017

Я считаю, что решение такое же, как у @spyar, которое приложение Keychain Access сохранило старое имя пользователя.

В этой ситуации есть 2 решения:

  1. Удалить информацию в Доступ к связке ключей по
    • Открыть Доступ к связке ключей Приложение
    • Поиск github
    • Удалить соответствующие учетные данные

или

  1. Если вы используете хотите использовать ssh ключ . Вы просто измените свой URL репо с https

https://github.com/username/repo.git

в

git@github.com: имя пользователя / repo.git

Надеюсь, это поможет.

6 голосов
/ 15 февраля 2017

Я использую Mac, и проблема решается удалением записи github из приложения доступа к цепочке для ключей: Вот что я сделал:

  1. Откройте «Keychain Access.app» (вы можете найти его в Spotlight или LaunchPad)
  2. Выберите "Все товары" в категории
  3. Поиск "git"
  4. Удаляй все старые и странные предметы. Попробуй нажать еще раз, и это просто РАБОТАЕТ

Вышеуказанные шаги скопированы из @spyar для простоты.

1 голос
/ 22 января 2019

Я недавно столкнулся с этой проблемой для старого репозитория на моей машине, который был загружен с помощью https.шаги 5 и 6 решили мою проблему, переустанавливая удаленный URL для моего репо с использования URL-адреса https на URL-адрес ssh

, проверяя, что удаленный использует URL-адрес https

> git remote -v
origin  https://github.com/ExampleUser/ExampleRepo.git (fetch)
origin  https://github.com/ExampleUser/ExampleRepo.git (push)

затемпереустановка источника для использования ssh url

> git remote set-url origin git@github.com:ExampleUser/ExampleRepo.git

проверка нового удаленного

> git remote -v
origin  git@github.com:ExampleUser/ExampleRepo.git (fetch)
origin  git@github.com:ExampleUser/ExampleRepo.git (push)

теперь может успешно git push -u origin

я до сих пор не уверен, чтонастройка, которую я бы изменил, что могло привести к сбою push-сообщения, когда для пульта дистанционного управления установлен https, но это помогло решить мою проблему

1 голос
/ 31 мая 2013

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

Итак, вот мое решение: удалите ssh-ключ не того пользователя (яможет сделать это, потому что неправильный пользователь также является моей учетной записью).Если неправильный пользователь не является вашей учетной записью, вам может потребоваться изменить ssh-ключ, но я не думаю, что это произойдет.

И я думаю, что ваша проблема может быть вызвана ошибкой опечатки вимя вашей учетной записи.

0 голосов
/ 12 июня 2019

Для меня решение, предложенное FAHID (для Windows) и LEANNE (для Mac), работало только. Спасибо вам обоим!

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