Знаменитая фраза Git «ОШИБКА: пользователю отказано в доступе к .git»

119

Я пробовал поискать в Google и прочитал https://help.github.com/en/articles/connecting-to-github-with-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

Я изменил .ssh на 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.

Привет, медерот! Вы успешно прошли аутентификацию, но 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. Вот какие команды я использовал.

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. Если я git clone, используя ssh, сделаю edit, commit и git push, я получу то же самое.

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, когда я его переименовал ?! Это нужно кешировать ?!

Медер Омуралиев
источник
Я использую «Github для Windows», и у меня возникла аналогичная проблема при переключении между двумя учетными записями Github. Вот мое решение: stackoverflow.com/questions/18565876/…
Алиса
Если вы хотите нажать из 2 разных локальных репозиториев на их соответствующее
исходное

Ответы:

35

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

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

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

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

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

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

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

Больше :

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

Марк Лонгэр
источник
Отличный помощник, Марк! Это исправило это и для меня.
Leachy Peachy
Это было оно. Вы избавили меня от огромной головной боли. Теперь мне просто нужно не забывать запускать ssh-add ...каждый раз, когда я хочу переключить логины github / ssh.
Cerin
Почему-то ssh-add -d <keyfile>не работает. (Удаление файлов произошло вручную.) Упомянутое вами кеширование необходимо как-то вручную перезагрузить. Как?
not2qubit
ssh-add -d-> «Не удалось установить соединение с вашим агентом аутентификации».
Alex
Это ssh-addбыло то, что сделало это для меня. Спасибо!
Rayryeng
160

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

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

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

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

  2. Выберите «Все товары» в категории

  3. Искать "git"

  4. Удалите все старые и странные предметы

  5. Попробуйте нажать еще раз, и он просто РАБОТАЕТ

Алиса Чан
источник
17
Большой палец вверх, приятель. Ты герой.
Prince Bansal
1
Черт, да, наконец, после борьбы с бесчисленным количеством ключей SSH, это ответ, который сработал! Кажется, что для доступа Mac и https используется связка ключей. Псих.
Патрик Чу
1
БЛАГОСЛОВНО, ТЫ Я ПЫТАЛСЯ РЕШИТЬ ЭТО В ТЕЧЕНИЕ НЕДЕЛЬ
Джон
1
Выглядит очень полезно, но непонятно, что это такое old & strange. Я собираюсь испортить кучу вещей ..?
geotheory
1
@geotheory Это old & strangeозначает старые элементы даты и неправильный адрес электронной почты или имя пользователя. Вы можете отсортировать таблицу по Date Modified.
Alice Chan
92

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

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

введите описание изображения здесь введите описание изображения здесь

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

FAHID
источник
2
Отлично. Я получал 403 доступ с учетной записью, которую я больше не использую. Теперь решено.
Антон Епихин
1
для меня было достаточно только удаления учетных данных github.com
Барт Де
И там вы можете изменить свой логин и все, что угодно. Это способ.
WesternGun
На самом деле это сработало и для меня, но что бы я делал, если бы у меня было 2 разных аккаунта?
an4s911
22

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

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

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

Лиан
источник
1
Спасибо, у меня это сработало. Он запросил у меня пароль, и я смог нажать после того, как предоставил свой пароль. Очень признателен!
pixel
... но это не решило проблему для меня в Windows, только на Mac
пиксель
... но @Fahid, предложенный выше для очистки учетных данных в Windows, помог
пиксель
Ты герой.
Vaibhav
Это правильный ответ, если у нас несколько проектов github, принадлежащих разным учетным записям
Гангадхар JANNU
14

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

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

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

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

ssh-add   ~/.ssh/github

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

Sarvesh
источник
3
также ssh-add -Dудаляет все удостоверения, может быть полезно, если агент переходит в недопустимое состояние.
Сэм
6

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

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

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

Дипак Бхатта
источник
6

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

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

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

Или

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

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

в

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

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

thuanle
источник
2

Недавно я столкнулся с этой проблемой для старого репо на моем компьютере, который был загружен с помощью 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)

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

> 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, но это было решение моей проблемы

PhilVarg
источник
ОШИБКА: Monajalal отказано в разрешении на unrealcv / Synt-computer-vision.git. фатальный: не удалось прочитать из удаленного репозитория. Убедитесь, что у вас есть правильные права доступа и репозиторий существует.
Мона Джалал,
1

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

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

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

Перт Чарльз
источник
0

Эта проблема также вызвана:

Если вы используете mac / linux и используете ControlMaster в своем ~ / .ssh / config, могут быть запущены некоторые главные процессы управления ssh.

Чтобы найти их, запустите:

ps aux | grep '\[mux\]'

И убейте соответствующих.

удар
источник
0

Я тоже столкнулся с этим, причиной этого для меня было то, что при клонировании репо, в которое я отправлял свои изменения, я взял URL-адрес клона из вкладки инкогнито, не входя в систему (я до сих пор не понимаю, как это влияет). Это по какой-то причине привело к тому, что git выбрал другую учетную запись пользователя. Когда я попробовал снова с правильной страницы входа, у меня все заработало, как обычно.

rajoriav
источник
0

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

В конце концов я решил проблему, обновив токен личного доступа GitHub, связанный с учетной записью Travis, с public_repoразрешением доступа к области:

Выберите <code> public_repo </code>

ms609
источник