it-swarm.cn

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

我能够通过HTTPS身份验证克隆此repo的副本。我做了一些提交,想要推回到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
[email protected]/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://[email protected]/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
[email protected]/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
564
Mike

我刚刚遇到同样的问题,只是弄明白是什么原因。

Github似乎只支持ssh方式来读取和写入repo,虽然https方式也显示“Read&Write”。

因此,您需要将PC上的repo配置更改为ssh方式:

  1. 编辑repo目录下的.git/config文件
  2. url=部分找到[remote "Origin"]entry
  3. 将其从url=https://[email protected]/derekerdmann/lunch_call.git更改为url=ssh://[email protected]/derekerdmann/lunch_call.git。也就是说,将@符号之前的所有文本更改为ssh://git
  4. 保存config文件并退出。现在您可以使用git Push Origin master在GitHub上同步您的仓库
768
Xiao

为了能够使用https协议进行登录,您应首先将 身份验证凭据 设置为git 远程URI

git remote set-url Origin https://[email protected]/user/repo.git

然后在尝试git Push时会要求您输入密码。

实际上,这是http身份验证格式。您也可以设置密码:

https://youruser:[email protected]/user/repo.git

您应该知道,如果您这样做,您的github密码将以纯文本形式存储在.git目录中,这显然是不可取的。

384
Thiago Macedo

一个小小的补充 肖恩的回答

您可以使用.git/config命令而不是手动编辑git remote set-url文件。

在你的情况下,它应该是:

git remote set-url Origin ssh://[email protected]/derekerdmann/lunch_call.git

我发现它比使用点文件更容易,更干净。

103
fetsh

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

url=部分下找到[remote "Origin"]条目

将其从url=https://github.com/rootux/ms-Dropdown.git更改为 https://[email protected]/rootux/ms-Dropdown.git

其中USERNAME是你的github用户名

53
Gal Bracha

其他建议切换到SSH的答案忽略了这一点。支持HTTPS,但您必须使用GITHUB密码登录,而不是SSH密码(这就是给出了同样错误的错误)。 

我遇到了同样的问题,但确保在终端密码上使用我的实际GitHub密码提示修复了解决方案而没有更改配置,或使用SSH。

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

希望能帮助其他人解决同样的问题......

41
BMB

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

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

$ git Push -u Origin master

得到了错误:

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

它应该通过为全局或当前repo设置user.name来修复

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

但事实并非如此。 

通过从Keychain Access app Passwords部分删除与GitHub相关联的OLDUSER来解决问题。然后Push命令成功。

$ git Push -u Origin master

参考

20
zeeawan

我认为@dewwaters对旧版本的答案是正确的。 HTTPS URL需要具有用户名。我有git 1.7.0.4和git Push Origin master甚至不会要求密码,直到我添加它。

16
nisah

这对我有用 - :

git remote set-url Origin https://[email protected]/user/repo.git

希望能帮助到你

15
stevensagaar

升级你的git。 GitHub在 https://help.github.com/articles/error-the-requested-url-returned-error-403 回答了这个问题。

12
gsf

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

9
Nick Veys

如果您使用的是Windows,有时可能会发生这种情况,因为Windows会将外部存储库(在我们的例子中为github)的凭据存储在自己的存储中。保存在那里的凭证可能与您现在需要的凭据不同。 

enter image description here

因此,要避免此问题,只需在此存储中找到github并删除已保存的凭据。在此之后,推送git将请求您的凭据,并允许您推送。

9
Andrew Gans

我实际上有一个非常简单的解决方案。我所做的只是在克隆存储库后以不同方式编辑git配置文件。您需要在默认的 config 文件中编辑远程Origin 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
9
larrytech

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

7
Mike
  1. 单击您的存储库
  2. 在右侧,单击“设置” 
  3. 在左侧选项面板上,单击“协作者”
  4. 在GitHub中添加您知道的人名
  5. 点击“添加协作者”

在此之后,我们的“推送到Git”工作得很好。

7
Krishna
7
SMSM

这样做是为了临时修复

git Push -u https://username:[email protected]/username/repo_name.git master

3
x0v

改变它

url=https://[email protected]/derekerdmann/lunch_call.git 

url=ssh://[email protected]/derekerdmann/lunch_call.git

有用! 

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

3
JimmyDong

上述答案都不适用于我的enterprise GitHub帐户。按照以下步骤通过ssh密钥生成方式进行推送。 

创建一个回购。[。_____。]确保其中至少有一个文件(即使只是自述文件)生成ssh密钥:[。_____。] ssh-keygen -t rsa -C "[email protected]" 复制内容将文件〜/ .ssh/id_rsa.pub添加到GitHub帐户设置中的SSH密钥。测试SSH密钥:[。_____。] ssh -T [email protected] clone the repo: git clone git://github.com/username/your-repository 现在cd到你的git clone文件夹并执行: git remote set-url Origin [email protected]:username/your-repository.git 现在尝试编辑文件(尝试自述文件),然后执行:

git add -A git commit -am "my update msg" git Push -u Origin master

3
chandresh

什么对我有用:

我的回购是 fork 并且仍然与父母回购链接。

git remote -v

会告诉你它是否是你的回购。

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

允许您将其重新配置为您的仓库,然后允许您推送。

3
timbo7io

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

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

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

3
venkat sam

对于任何好奇的人,我的mac机器vs lucid vm运行git 1.7.6 vs 1.7.0.4,并且完全相同的repo可以从我的mac(更新的git)推送但不是VM

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

3
patcon

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

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

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

3
Leos Literak

对于那些在使用 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
3
Moosa Baloch

我想出了我自己对这个问题的看法。

问题不是将协议从https更改为ssl,而是设置Github全局用户名和电子邮件! (我试图推送到私人存储库。

git config --global user.email "[email protected]"

git config --global user.name "Your full name"
2
Lucas Ou-Yang

Github有专门用于解决此错误的页面:

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

在我的例子中,事实证明使用新版本的git(1.8.5.2)解决了这个问题。

2
AndyL

这发生在我身上,因为我的同事意外地禁用了此存储库所分配的存储库。可能会检查以确保原始git(hub)repo实际上仍然存在。

1
ftrotter

使用ssh而不是https进行克隆为我解决了这个问题

ssh cloning

1
kilojoules

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

1
gnoll110

在gitbox应用程序中将https更改为 http 后,它对我有用。 

1
Alex Stone

对我有用的是从http改为ssh:

git remote rm Origin
git remote add Origin [email protected]:username/repoName.git

然后用git remote -v检查它

1
Connor Leech

唯一帮助我的是另一个问题的答案:

Git着名的“错误:.git拒绝用户权限”

总而言之,如果您和Windows一样,请搜索“凭据管理器”并将其打开。在那里,你可以找到你的Git凭证。更改用户名(您必须将其更改为其他内容)。

您也可以在“控制面板” - “用户帐户” - “凭据管理器”下找到它。 

1
WesternGun

在我的情况下,错误是由于我在存储库中没有权限引起的。

1
Sebastián Lara

得到了同样的错误。无法访问403。在我的案例中,这些答案都没有奏效。所以我尝试了以下,它的工作。

  1. 从git config中删除user.email和user.password
  2. 从Keychain中删除保存的凭据。
  3. 重启系统。
  4. 现在推送代码,会问你用户/通过
  5. 继续给予用户/通行证。 

代码推送成功 

!苹果系统!

1
name-it

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

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

1
noisy

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

1
RichardW11

在我的情况下,我得到了上述错误 - 我的 电子邮件ID与github尚未验证 。[。_____。] GitHub正在发出未经验证的电子邮件的警告。

验证电子邮件,然后推送为我工作。

1
hitesh israni

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

1
Yauhen

我之前以不同的github用户身份登录(比如user1)。对于我的实际github帐户(比如user2),我能够在github中克隆一个新创建的repo,但是我无法推送更改。

我尝试了上面提到的所有答案,包括从Windows Credential Manager中删除凭证但没有任何效果。 

最终有效的是启动github Windows App。导航到设置 - >选项,然后登录的用户是user1。单击该用户的“注销”,然后以本例中的用户身份登录user2

enter image description here

0
asolanki

要在Push错误期间解决此问题,您必须进入.git目录配置文件并更改给定的行:

precomposeunicode = true
[remote "Origin"]
http://[email protected]:abc/xyz.git

将行更改为此 

precomposeunicode = true
[remote "Origin"]
ssh://[email protected]/abc/xyz.git

这解决了我的问题。

0
rahul kumar

尝试使用SSH密钥而不是HTTP创建Origin。

如果您可以使用SSH密钥启动,则URL以以下内容开头:

[email protected]:<YOUR REPO URL>

现在,您可以添加,提交和推送到相应的分支

0
KPavan Kumar

如果没有一个解决方案适合你,请快速阅读这个答案[可能是你的情况]:

对于那些喜欢我的人,他们经历了所有这些[伟大的]答案,但仍然无法推动你的提交,推动失败可能还有另外一个原因。 

检查你的git存储库(无论它在哪里,GitHub,BitBucket,...),看看是否一切正常。在我的情况下,花了很多时间弄清楚我的问题是什么(甚至指责PyCharm的新版本!:))我意识到我做了一些愚蠢的事情,我的BitBucket回购超过了2GB限制并自动转为只读repo,这就是我无法推送任何新提交的原因。而且,这确实会导致您收到相同的错误(403:无法访问该URL。) 

0
Pedram

为用户提供写访问权限。

提供访问权限后。将代码拉出一次,然后按下它。

0
anil

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

要解决此问题并恢复对回购的写入权限,您的帐户计划将需要升级,或者需要删除部分协作者。

0
Jacob Nelson

我和bitbucket有同样的问题,但我等了5分钟,然后我重试了,它运行良好。有时它可能是提供商的问题。

0
Promo

更多原因可能是github.com上的电子邮件验证

只需登录github.com并检查是否没有消息,以确认您的电子邮件地址。必要时确认。

0
Denis

如果您使用BitBucket,您的帐户可以进入只读模式,原因如下:

  • 我们正在升级我们的存储细分,无法接受新数据。
  • 我们正在推出不需要新写入的更改。
  • 存储库的所有者需要升级其帐户以接受更多用户。

https://confluence.atlassian.com/display/BITBUCKET/Repositories+in+Read-Only+Mode

0
luckyape

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

在[remote“Origin”部分下找到url =条目

将其从url = https://github.com/rootux/ms-Dropdown.git 改为 https://[email protected]/rootux/ms-Dropdown.git

其中USERNAME是您的github用户名

=>这个解决方案适合我。

0
Vinay Sikarwar

我有同样的问题,同样的错误告诉我这个 

remote:对user2拒绝user/repo.git的权限。

这个问题是在Windows和Mac上,它存储在缓存中是Github的关键路径。

要在Mac上解决此问题,请执行此操作

git credential-osxkeychain erase

没有任何东西会在控制台上提示。

然后只需做一个正常的推送,它应该让你再次从Github写你的用户名和密码。

git commit -m "First Commit"

对于窗口用途,请参阅上面的^以及存储的凭据

0
Gastón Saillén