Нажатие на Git возвращает код ошибки 403 неустранимый: HTTP-запрос не выполнен - PullRequest
591 голосов
/ 16 сентября 2011

Мне удалось клонировать копию этого репозитория с проверкой подлинности по протоколу HTTPS. Я сделал несколько коммитов и хочу вернуться на сервер GitHub. Использование Cygwin в Windows 7 x64.

C:\cygwin\home\XPherior\Code\lunch_call>git push
Password:
error: The requested URL returned error: 403 while accessing https://MichaelDrog
alis@github.com/derekerdmann/lunch_call.git/info/refs

fatal: HTTP request failed

Также настройте его в подробном режиме. Я все еще довольно сбит с толку.

C:\cygwin\home\XPherior\Code\lunch_call>set GIT_CURL_VERBOSE=1

C:\cygwin\home\XPherior\Code\lunch_call>git push
Password:
* Couldn't find host github.com in the _netrc file; using defaults
* About to connect() to github.com port 443 (#0)
*   Trying 207.97.227.239... * 0x23cb740 is at send pipe head!
* Connected to github.com (207.97.227.239) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: C:\Program Files (x86)\Git/bin/curl-ca-bundle.crt
  CApath: none
* SSL connection using AES256-SHA
* Server certificate:
*        subject: 2.5.4.15=Private Organization; 1.3.6.1.4.1.311.60.2.1.3=US; 1.
3.6.1.4.1.311.60.2.1.2=California; serialNumber=C3268102; C=US; ST=California; L
=San Francisco; O=GitHub, Inc.; CN=github.com
*        start date: 2011-05-27 00:00:00 GMT
*        expire date: 2013-07-29 12:00:00 GMT
*        subjectAltName: github.com matched
*        issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert High Ass
urance EV CA-1
*        SSL certificate verify ok.
> GET /derekerdmann/lunch_call.git/info/refs?service=git-receive-pack HTTP/1.1
User-Agent: git/1.7.4.3282.g844cb
Host: github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 401 Authorization Required
< Server: nginx/1.0.4
< Date: Thu, 15 Sep 2011 22:44:41 GMT
< Content-Type: text/plain
< Connection: keep-alive
< Content-Length: 55
< WWW-Authenticate: Basic realm="GitHub"
<
* Ignoring the response-body
* Expire cleared
* Connection #0 to host github.com left intact
* Issue another request to this URL: 'https://MichaelDrogalis@github.com/dereker
dmann/lunch_call.git/info/refs?service=git-receive-pack'
* Couldn't find host github.com in the _netrc file; using defaults
* Re-using existing connection! (#0) with host github.com
* Connected to github.com (207.97.227.239) port 443 (#0)
* 0x23cb740 is at send pipe head!
* Server auth using Basic with user 'MichaelDrogalis'
> GET /derekerdmann/lunch_call.git/info/refs?service=git-receive-pack HTTP/1.1
Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
User-Agent: git/1.7.4.3282.g844cb
Host: github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 401 Authorization Required
< Server: nginx/1.0.4
< Date: Thu, 15 Sep 2011 22:44:41 GMT
< Content-Type: text/plain
< Connection: keep-alive
< Content-Length: 55
* Authentication problem. Ignoring this.
< WWW-Authenticate: Basic realm="GitHub"
* The requested URL returned error: 401
* Closing connection #0
* Couldn't find host github.com in the _netrc file; using defaults
* About to connect() to github.com port 443 (#0)
*   Trying 207.97.227.239... * 0x23cb740 is at send pipe head!
* Connected to github.com (207.97.227.239) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: C:\Program Files (x86)\Git/bin/curl-ca-bundle.crt
  CApath: none
* SSL re-using session ID
* SSL connection using AES256-SHA
* old SSL session ID is stale, removing
* Server certificate:
*        subject: 2.5.4.15=Private Organization; 1.3.6.1.4.1.311.60.2.1.3=US; 1.
3.6.1.4.1.311.60.2.1.2=California; serialNumber=C3268102; C=US; ST=California; L
=San Francisco; O=GitHub, Inc.; CN=github.com
*        start date: 2011-05-27 00:00:00 GMT
*        expire date: 2013-07-29 12:00:00 GMT
*        subjectAltName: github.com matched
*        issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert High Ass
urance EV CA-1
*        SSL certificate verify ok.
* Server auth using Basic with user 'MichaelDrogalis'
> GET /derekerdmann/lunch_call.git/info/refs HTTP/1.1
Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
User-Agent: git/1.7.4.3282.g844cb
Host: github.com
Accept: */*
Pragma: no-cache

* The requested URL returned error: 403
* Expire cleared
* Closing connection #0
error: The requested URL returned error: 403 while accessing https://MichaelDrog
alis@github.com/derekerdmann/lunch_call.git/info/refs

fatal: HTTP request failed

Вот версии git и curl, которые у меня есть:

C:\Users\XPherior>git --version
git version 1.7.4.msysgit.0

C:\Users\XPherior>curl --version
curl 7.21.7 (amd64-pc-win32) libcurl/7.21.7 OpenSSL/0.9.8r zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtsp
smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate Largefile NTLM SSL SSPI libz

Ответы [ 50 ]

794 голосов
/ 14 октября 2011

Я только что получил ту же проблему и только что выяснил причину.

Кажется, Github поддерживает только способ чтения и записи репозитория ssh, хотя https также отображал 'Read & Write'.

необходимо изменить конфигурацию репо на вашем ПК в ssh:

  1. редактировать .git/config файл в вашем каталоге репо
  2. найти url= запись в разделе [remote "origin"]
  3. изменить его с url=https://MichaelDrogalis@github.com/derekerdmann/lunch_call.git на url=ssh://git@github.com/derekerdmann/lunch_call.git.то есть измените все тексты перед символом @ на ssh://git
  4. Сохраните файл config и выйдите.теперь вы можете использовать git push origin master для синхронизации репо на GitHub
400 голосов
/ 06 июля 2012

Чтобы определенно иметь возможность войти в систему с использованием протокола https, сначала необходимо установить учетные данные для аутентификации *1003* в git Удаленный URI :

git remote set-url origin https://yourusername@github.com/user/repo.git

Тогда вам будет предложено ввести пароль при попытке git push.

На самом деле это формат HTTP-аутентификации. Вы также можете установить пароль:

https://youruser:password@github.com/user/repo.git

Вы должны знать, что если вы сделаете это, ваш пароль на github будет сохранен в виде открытого текста в вашем каталоге .git, что, очевидно, нежелательно.

107 голосов
/ 05 июня 2012

Одно небольшое дополнение к Ответ Шона .

Вместо редактирования файла .git/config вручную, вы можете использовать команду git remote set-url.

В вашем случае это должно быть:

git remote set-url origin ssh://git@github.com/derekerdmann/lunch_call.git

Я считаю это проще и чище, чем возиться с точечными файлами.

53 голосов
/ 07 ноября 2012

Редактировать .git/config файл в вашей директории репо

Найти url= запись в разделе [remote "origin"]

Изменить его с url=https://github.com/rootux/ms-Dropdown.git на https://USERNAME@github.com/rootux/ms-Dropdown.git

где USERNAME - ваше имя пользователя на github

42 голосов
/ 17 января 2012

Другие ответы, которые предлагают переключиться на SSH, упускают из виду.HTTPS поддерживается, но вы должны войти в систему с вашим паролем GITHUB, а не вашей парольной фразой SSH (именно это и дало мне точно такую ​​же ошибку).

У меня возникла та же проблема, но использование моего действительного пароля GitHub при запросе пароля терминала устранило решение без изменения конфигурации или обращения к SSH.

Причинаважно отметить, что многие государственные учреждения (например, моя школа) будут блокировать SSH, но разрешить HTTPS (это единственная причина, по которой я начал клонировать поверх HTTPS).

Надеюсь, что это поможеткто-нибудь еще с такой же проблемой ...

25 голосов
/ 10 ноября 2014

Та же ошибка и разрешение на Mac OS X.

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

$ git push -u origin master

И получил ошибку:

remote: разрешение для NEWUSER / NEWREPO.git запрещено OLDUSER. неустранимый: невозможно получить доступ ‘https://github.com/NEWUSER/NEWREPO.git/': Запрошенный URL вернул ошибку: 403

Это должно быть исправлено путем установки user.name для глобального или текущего репо

$ git config –-global user.name NEWUSER
$ git config user.name NEWUSER

Но это не так.

Я исправил это, удалив OLDUSER, связанный с GitHub, из приложения Keychain Access в разделе Пароли. Затем команда push прошла успешно.

$ git push -u origin master

ссылка

17 голосов
/ 27 июня 2012

Я думаю, что @deepwaters получил правильный ответ для более старых версий.URL-адрес HTTPS должен содержать имя пользователя.У меня был git 1.7.0.4, и git push origin master даже не запрашивал пароль, пока я его не добавил.

16 голосов
/ 28 сентября 2015

Это работает для меня -:

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

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

13 голосов
/ 20 июня 2012

Обновите свой мерзавец.GitHub ответил на этот вопрос на https://help.github.com/articles/error-the-requested-url-returned-error-403.

12 голосов
/ 18 апреля 2018

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

enter image description here

Поэтому, чтобы избежать этой проблемы, просто найдите github в этом хранилище и удалите сохраненные учетные данные. После этого, во время нажатия git запросит ваши учетные данные и позволит вам нажать.

...