推送到Git返回错误代码403致命:HTTP请求失败

我能够通过HTTPS验证克隆此回购的副本。 我做了一些提交,并希望推回到GitHub服务器。 在Windows 7 x64上使用Cygwin。

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 

我刚刚得到同样的问题,只知道是什么原因。

Github似乎只支持SSH方式来读取和写回购,虽然https方式也显示“读写”。

所以你需要改变你的PC上的repo配置为SSH方式:

  1. 编辑你的repo目录下的.git/config文件
  2. [remote "origin"]部分找到url= entry
  3. 将其从url=https://MichaelDrogalis@github.com/derekerdmann/lunch_call.giturl=ssh://git@github.com/derekerdmann/lunch_call.git 。 也就是将@符号之前的所有文本改为ssh://git
  4. 保存config文件并退出。 现在你可以使用git push origin master在GitHub上同步你的repo

要确定能够使用https协议登录,您应该首先将您的身份验证凭据设置为git Remote 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目录的明文中,这显然是不可取的。

肖恩的答案的一个小的补充。

不要手动编辑.git/config文件,你可以使用git remote set-url命令。

你的情况应该是:

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

我发现它更容易,更清洁,而不是乱七八糟的文件。

  • help.github.com:更改远程的URL

编辑您的repo目录下的.git/config文件

[remote "origin"]部分找到url= entry

将其从url=https://github.com/rootux/ms-Dropdown.git更改为https://USERNAME@github.com/rootux/ms-Dropdown.git

USERNAME是你的github用户名

其他答案表明切换到SSH排序错过了一点。 HTTPS是支持的,但是你必须用你的GITHUB密码登录,而不是你的SSH密码(这正是给了我相同的确切的错误)。

我有同样的问题,但一定要使用我的实际GitHub密码在终端密码提示固定的解决方案,不改变配置,或诉诸SSH。

重要的是要注意到这一点,许多公共机构(如我的学校)将阻止SSH,但允许HTTPS(这是我首先开始克隆HTTPS的唯一原因)。

希望能帮助其他人有同样的问题

我认为@deepwaters得到了正确的旧版本的答案。 HTTPS网址需要有用户名。 我有混帐1.7.0.4和git push origin master甚至不会要求密码,直到我加入它。

Mac OS X上有相同的错误和分辨率

一切工作正常,直到我在GitHub上创建一个新的帐户,并试图推动

 $ git push -u origin master 

并得到了错误:

远程:对OLDUSER拒绝的NEWUSER / NEWREPO.git权限。 致命:无法访问“ https://github.com/NEWUSER/NEWREPO.git/ ”:请求的URL返回错误:403

它应该已经通过设置user.name为全球或当前回购修复

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

但事实并非如此。

我通过在Passwords部分下的Keychain Access应用程序中删除与GitHub关联的OLDUSER来修复它 。 然后推命令成功了。

 $ git push -u origin master 

参考

这适用于我 – – :

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

希望它有帮助

弄清楚了。 我克隆了HTTPS。 设置我的公共SSH密钥,通过SSH克隆,推送SSH修复它。

只需将您的用户名添加到像这样的网址: https://islam9@github.com/islam9/bootstrap-rtl

请检查: http : //islamkhalil.wordpress.com/2012/12/06/github-error-pushing-to-git-returning-error-code-403-fatal/

我其实有一个非常简单的修复。 我所做的只是在克隆版本库之后以不同的方式编辑git配置文件。 远程原始URL是您需要在您的默认配置文件中编辑的。 它应该看起来像下面看到的

 [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = https://*username*@github.com/*username*/*repository*.git [branch "master"] remote = origin merge = refs/heads/master 

403代码是“禁止”。 服务器看到了你的请求,并拒绝了它。 你有权限推送到该存储库?

  1. 点击你的存储库
  2. 在右侧,点击“设置”
  3. 在左侧选项面板上,点击“协作者”
  4. 在GitHub中添加您认识的人员名称
  5. 点击“添加协作者”

在此之后,我们的“推动Git”工作正常。

我面临同样的错误,原因是愚蠢的 – 我没有权限提交选定的存储库。 我不知道我必须

  1. 先选叉项目
  2. 克隆版本库本地
  3. 在本地提交我的更改
  4. 推送更改到我的github克隆
  5. 向上游请求拉取请求

https://help.github.com/categories/63/articles所述;

什么对我有效:

我的回购是一个分支 ,仍然与父母回购有关。

 git remote -v 

会告诉你,如果这是你的回购或不。

 git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git 

允许你重新配置它到你的回购,然后让你推。

对于任何好奇的人来说,我的Mac机器和lucid vm都运行git 1.7.6 vs 1.7.0.4,和我的mac(新的git)完全相同的repo是可以推的,但不是VM

相同的卷曲版本。 也许一些旧的git版本不支持https推送?

从它改变

 url=https://MichaelDrogalis@github.com/derekerdmann/lunch_call.git 

 url=ssh://git@github.com/derekerdmann/lunch_call.git 

有用!

不要忘记“@”之前的“git”。

我想出了我自己的这个问题的变化。

这个问题并没有改变协议从https到ssl,而是设置Github的全球用户名和电子邮件! (我试图推到一个私人存储库。

 git config --global user.email "your_github_email_@email.com" git config --global user.name "Your full name" 

添加用户名作为URL的一部分,并且发生此错误是因为git命令正在击中http而不是https。 所以设置网址

 git remote set-url origin https://<username>@github.com/Path_to_repo.git 

之后,您将被提示输入密码:

我现在有这个问题,事实证明,我的服务器/etc/resolver.conf文件有一个错误的IP地址。 可以帮助别人。

这发生在我身上,因为我的同事意外地禁用了这个仓库所分配的仓库。 只是可能会检查,以确保原始的(集线器)回购实际上仍然存在。

这可能是一个会计问题。 上游(私人)回购所有者的Github账户可能不是财务。 我已经看到客户的信用卡已过期。

我遇到过同样的问题。 我的情况是:我在本地初始化git repo,然后在github上创建它,然后尝试添加远程分支。 我通过更改操作的顺序解决了我的问题:在github网站上创建了一个回购站,然后在本地进行了回复。 但是,他们喜欢像我一样从命令行完成所有的事情。

在gitbox应用程序中更改https后,它为我工作。

有时设置没有错,在github服务器上有一些问题。

https://status.github.com – github的当前状态:)

Github有专门解决这个错误的页面:

https://help.github.com/articles/https-cloning-errors

在我看来,使用新版本的git(1.8.5.2)解决了这个问题。

编辑您的repo目录下的.git / config文件

在[remote“origin”]部分找到url = entry

将其从url = https://github.com/rootux/ms-Dropdown.git更改为https:://USERNAME@github.com/rootux/ms-Dropdown.git

USERNAME是你的github用户名

=>这个解决方案为我工作。

对于那些在使用ssh (根据Xiao )或者http urls尝试这些命令时有权限拒绝403错误的人

 >git config --global --unset-all credential.helper >git config --unset-all credential.helper 

具有管理员权限

 >git config --system --unset-all credential.helper 

另一个可能的原因是,你可能已经超出了他们的计划限制。

要解决此问题并恢复对存储库的写入访问,您的帐户计划需要升级,否则需要删除一些合作者。