828 Stimmen

Pushing zu Git mit Fehlercode 403 fatal: HTTP-Anfrage fehlgeschlagen

Ich war in der Lage, eine Kopie dieses Repos über HTTPS authentifiziert zu klonen. Ich habe einige Änderungen vorgenommen und möchte sie wieder auf den GitHub-Server übertragen. Mit Cygwin auf 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

Richten Sie außerdem den ausführlichen Modus ein. Ich bin immer noch ziemlich verblüfft.

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

Dies sind die Versionen von git und curl, die ich habe:

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

4 Stimmen

Sehen Sie sich den Kommentar an, der als Antwort veröffentlicht werden sollte. Ich habe es mit 1.7.1 zum Laufen gebracht, hatte auch das Problem mit der fehlenden Benutzer/Passwort-Eingabeaufforderung. Dank an stackoverflow.com/a/9575906/805284 ...

3 Stimmen

Prüfen, ob der Benutzer Lese-/Schreibzugriff auf das Repository hat

45 Stimmen

Fügen Sie in Zukunft nicht mehr "Authorization: Basic <stuff>" ein, wenn Sie Beispiele für http-Header anzeigen. Es ist einfach, das mit base64 zu dekodieren und dein Passwort zu bekommen. @mike: Wenn Sie Ihr Github-Passwort nicht geändert haben, seit Sie diese Frage gepostet haben, würde ich Ihnen empfehlen, dies zu tun.

1009voto

Xiao Punkte 11365

Ich habe gerade das gleiche Problem und habe gerade herausgefunden, was die Ursache ist.

Github scheint nur den ssh-Weg zum Lesen und Schreiben des Repo zu unterstützen, obwohl der https-Weg auch 'Read&Write' anzeigt.

Sie müssen also Ihre Repo-Konfiguration auf Ihrem PC auf ssh umstellen:

  1. Editar .git/config Datei in Ihrem Repo-Verzeichnis.
  2. finden. url= Eintrag unter Abschnitt [remote "origin"] .
  3. Ändern Sie es von:
    url=https://MichaelDrogalis@github.com/derekerdmann/lunch_call.git
    zu:
    url=ssh://git@github.com/derekerdmann/lunch_call.git
    Das heißt, ändern Sie alle Texte vor @ Symbol für ssh://git
  4. Speichern Sie config Datei und beenden Sie sie. Jetzt könnten Sie git push origin master um Ihr Projektarchiv auf GitHub zu synchronisieren.

65 Stimmen

Dieses Problem tritt häufig auf, wenn Sie mit der Nur-Lese-Adresse von Git klonen (dies ist die Standardeinstellung, wenn Sie nicht angemeldet sind), anstatt mit der ssh-Adresse zum Lesen und Schreiben.

51 Stimmen

Meine .git/config war eher wie url=https://github.com/mynickname/my_repo.git Aber ich habe es auch so geändert url=ssh://git@github.com/mynickname/my_repo.git und es hat geklappt

12 Stimmen

Sie können eine Repo-Url ändern mit git remote set-url Befehl. Siehe meine Antwort unten.

522voto

Thiago Macedo Punkte 5939

Um sich auf jeden Fall anmelden zu können mit https Protokolls, sollten Sie zunächst Ihr Authentifizierungsreferenz zum Git Entfernter URI :

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

Dann werden Sie nach einem Passwort gefragt, wenn Sie versuchen git push .

Tatsächlich ist dies das http-Authentifizierungsformat. Sie können auch ein Passwort festlegen:

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

Sie sollten sich darüber im Klaren sein, dass in diesem Fall Ihr Github-Passwort im Klartext in Ihrem .git-Verzeichnis gespeichert wird, was natürlich unerwünscht ist.

13 Stimmen

SSH ist bei der Arbeit blockiert, also muss ich HTTPS verwenden. Das Hinzufügen des Benutzernamens behebt meine Probleme.

43 Stimmen

Dies sollte die akzeptierte Antwort sein. Es gibt keinen Grund, eine Konfigurationsdatei manuell zu bearbeiten, wenn es eine Befehlszeilenschnittstelle dafür gibt.

4 Stimmen

Auch für mich ist dieser Weg ( benutzername@github... ) fragte nach dem Passwort und funktionierte, wohingegen ssh://git@github... fehlschlug, da es den öffentlichen Schlüssel erwartete.

133voto

fetsh Punkte 1879

Ein kleiner Zusatz zu Sean's Antwort .

Anstatt zu bearbeiten .git/config Datei manuell zu erstellen, können Sie mit git remote set-url Befehl.

In Ihrem Fall sollte das so sein:

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

Ich finde es einfacher und sauberer, als mit Punktdateien herumzuhantieren.

0 Stimmen

Ich weiß nicht, ob dies nur ein alter Beitrag ist und Git sich geändert hat, aber um das Problem zu beheben, musste ich heute git remote set-url origin ssh://git@github.com:derekerdmann/lunch_call.git mit einem Doppelpunkt zwischen github.com und dem Repo-Namen

67voto

Gal Bracha Punkte 16362

Editar .git/config Datei in Ihrem Repo-Verzeichnis

finden. url= Eintrag unter Abschnitt [remote "origin"]

Ändern Sie es von url=https://github.com/rootux/my-repo.git zu https://USERNAME@github.com/rootux/my-repo.git

wobei USERNAME ist Ihr Github-Benutzername

0 Stimmen

Diese Antwort traf nicht auf mein Problem zu. Meine Url in .git/config wird auf ` gesetzt. github.com/myrepo/subproject' .

0 Stimmen

Ich hatte dieses Problem mit Android Studio. Funktioniert gut.

0 Stimmen

Mein Instinkt sagt mir, dass dies eher die richtige Antwort ist, da andere Lösungen entweder zum SSH-Protokoll wechseln oder das Passwort im Klartext speichern.

52voto

BMB Punkte 1578

Die anderen Antworten, die einen Wechsel zu SSH vorschlagen, gehen irgendwie am Thema vorbei. HTTPS wird unterstützt, aber Sie müssen sich mit Ihrem GITHUB-Passwort anmelden, nicht mit Ihrer SSH-Passphrase (die bei mir genau den gleichen Fehler verursachte).

Ich hatte das gleiche Problem, aber wenn ich sicherstelle, dass ich mein tatsächliches GitHub-Passwort an der Terminal-Passwort-Eingabeaufforderung verwende, ist das Problem gelöst, ohne dass ich die Konfiguration ändern oder auf SSH zurückgreifen muss.

Der Grund, warum dies wichtig ist, ist, dass viele öffentliche Einrichtungen (wie meine Schule) SSH blockieren, aber HTTPS erlauben (was der einzige Grund ist, warum ich überhaupt angefangen habe, über HTTPS zu klonen).

Ich hoffe, das hilft allen, die das gleiche Problem haben...

1 Stimmen

Aber warum? In der Vergangenheit musste ich das nicht tun. Ist ein Zertifikat abgelaufen oder so?

0 Stimmen

Ich bin mir nicht sicher, ich bin kein Experte, aber so hat es in meinem Fall funktioniert :)

0 Stimmen

Dasselbe @Thufir. Ich habe keine Ahnung, warum das plötzlich funktioniert hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X