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

我能够通过HTTPS身份验证克隆此存储库的副本。我做了一些提交,想推回到GitHub服务器。在Windows 7 x64上使用Cygwin。

C:\cygwin\home\XPherior\Code\lunch_call>git pushPassword:error: The requested URL returned error: 403 while accessing https://MichaelDrogalis@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 pushPassword:* 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.crtCApath: 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 Assurance EV CA-1*        SSL certificate verify ok.> GET /derekerdmann/lunch_call.git/info/refs?service=git-receive-pack HTTP/1.1User-Agent: git/1.7.4.3282.g844cbHost: github.comAccept: */*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/derekerdmann/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.1Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXUser-Agent: git/1.7.4.3282.g844cbHost: github.comAccept: */*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.crtCApath: 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 Assurance EV CA-1*        SSL certificate verify ok.* Server auth using Basic with user 'MichaelDrogalis'> GET /derekerdmann/lunch_call.git/info/refs HTTP/1.1Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxUser-Agent: git/1.7.4.3282.g844cbHost: github.comAccept: */*Pragma: no-cache
* The requested URL returned error: 403* Expire cleared* Closing connection #0error: The requested URL returned error: 403 while accessing https://MichaelDrogalis@github.com/derekerdmann/lunch_call.git/info/refs
fatal: HTTP request failed

这些是我拥有的git和curl版本:

C:\Users\XPherior>git --versiongit version 1.7.4.msysgit.0
C:\Users\XPherior>curl --versioncurl 7.21.7 (amd64-pc-win32) libcurl/7.21.7 OpenSSL/0.9.8r zlib/1.2.5Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtspsmtp smtps telnet tftpFeatures: AsynchDNS GSS-Negotiate Largefile NTLM SSL SSPI libz
1220280 次浏览

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

想通了。我通过HTTPS克隆。设置我的SSH密钥,克隆SSH,然后推SSH修复它。

我只是遇到了同样的问题,只是想出了原因。

Github似乎只支持ssh方式读写仓库,尽管https方式也显示了“读写”。

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

  1. 编辑repo目录下的.git/config文件。
  2. 在第1节下找到url=条目。
  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上同步您的存储库。

其他建议切换到SSH的答案没有抓住重点。支持HTTPS,但您必须使用GITHUB密码登录,而不是您的SSH密码(这给了我同样的错误)。

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

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

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

对于任何好奇的人来说,我的mac机器vs lucid vm运行git 1.7.6 vs1.7.0.4,并且完全相同的repo可以从我的mac(较新的git)推送,但不能从VM推送

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

Sean的回答的一个小补充。

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

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

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

我发现它更容易和清洁,比搞乱点文件。

我认为@深水域在旧版本中的答案是正确的。HTTPS URL需要有用户名。我有git1.7.0.4和git push origin master甚至不会要求密码,直到我添加它。

为了确保能够使用https协议登录,您应该首先将鉴权凭证设置为git远程URI

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

然后在尝试git push时,系统会要求您输入密码。

事实上,这是超文本传输协议身份验证格式。您也可以设置密码:

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

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

我现在遇到了这个问题,结果发现我的服务器 /etc/resolver.conf文件有一个错误的ip地址。可能会帮助其他人。

将其从

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

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

它奏效了!

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

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

在第1节下找到url=条目

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

其中USERNAME是您的github用户名

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

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

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

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

如果您使用BitBucket,您的帐户可能会被置于只读模式,原因如下:

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

对我有用的是从超文本传输协议改为ssh:

git remote rm origingit remote add origin git@github.com:username/repoName.git

然后用git remote -v检查它

我也有同样的问题。我的情况是:在我在github上创建git repo之前,我在本地初始化了它,然后我尝试添加远程分支。我通过改变操作顺序来解决我的问题:在github站点上创建一个repo,然后在本地初始化它。但像我这样喜欢从命令行完成所有工作的人却不是这样。

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

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

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

我遇到了同样的错误,原因很愚蠢-我没有权限提交到选定的存储库。我不知道我必须

  1. 首先分叉选定的项目
  2. 本地克隆仓库
  3. 在本地提交我的更改
  4. 将更改推送到我的github克隆
  5. 向上游发送拉流请求

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

在gitbox应用程序中将https更改为超文本传输协议后,它对我有用。

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

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

在我的情况下,我得到了上面的错误为我的使用github的电子邮件ID尚未验证。GitHub发出未经验证的电子邮件警告。

验证电子邮件,然后推送对我有用。

我有同样的问题,但我等了5分钟,然后我重试,它工作得很好。有时可能是提供商的问题。

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

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

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

一切都很好,直到我创建了一个GitHub上的新帐户并试图推动

$ git push -u origin master

并得到错误:

远程:对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

但它没有。

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

$ git push -u origin master

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

在此之后,我们的“Push to Git”运行良好。

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

在节[远程"起源"]下查找url=条目

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

其中USERNAME是您的github用户名

=>这个解决方案对我有效。

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

ssh克隆

这对我有用-:

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

希望有帮助

我实际上对此有一个非常简单的修复。我所做的只是在克隆存储库后以不同的方式编辑git配置文件。远程源URL是您需要在默认配置文件中编辑的内容。它应该如下所示

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

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

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

将用户名添加为URL的一部分,会发生此错误,因为git命令击中的是超文本传输协议而不是https

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

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

在我的情况下,错误是因为我在存储库中没有权限。

什么对我有用:

我的repo是,仍然链接到父母的repo。

git remote -v

会告诉你这是你的回购还是不。

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

允许您将其重新配置到您的存储库,然后允许您推送。

对于那些在使用ssh(根据)或超文本传输协议 URL时权限被拒绝403错误的人试试这些命令

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

具有管理员权限

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

对我有用的是在门户上重置BitBucket密码,然后再次尝试推送。

得到同样的错误。无法访问403。在我的情况下,这些答案都不起作用。所以我尝试了下面的方法,它奏效了。

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

代码推送成功

macOS!

要在推送错误期间解决此类403,您必须进入. git目录配置文件并更改给定行:

precomposeunicode = true[remote "origin"]http://git@github.com:abc/xyz.git

把线改成这个

precomposeunicode = true[remote "origin"]ssh://git@github.com/abc/xyz.git

这解决了我的问题。

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

Git的著名错误:拒绝用户访问. git的权限

总而言之,如果您像我一样使用Windows,请搜索“Credential Manager”并打开它。在那里,您可以找到您的Git凭据。更改用户名(您必须将其更改为其他名称)。

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

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

通过访问您的git帐户创建存储库。

生成ssh密钥:

ssh-keygen -t rsa -C "your_email@example.com"

将文件~/. ssh/id_rsa.pub的内容复制到GitHub帐户设置中的SSH密钥。测试SSH键:

ssh -T git@github.comclone the repo:git clone git://github.com/username/your-repository

现在cd到您的git clone文件夹并执行:

git remote set-url origin git@github.com:username/your-repository.git

现在尝试编辑文件(尝试README),然后执行:

git add -Agit commit -am "my update msg"git push -u origin master

更新:新的git版本似乎建议在创建新仓库时不要有任何文件。因此,创建一个空白仓库。

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

在此处输入图片描述

因此,为了避免这个问题,只需在此存储中找到github并删除保存的凭据。之后,在推送git时会请求您的凭据并允许您推送。

这样做是为了暂时的修复

git push -u https://username:password@github.com/username/repo_name.git master

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

对于那些像我一样经历了所有这些[伟大的]答案但仍然无法推动您的提交的人来说,可能还有另一个原因导致推送失败。

检查你的git仓库(无论它在哪里,GitHub,BitBucket,……),看看是否一切正常。就我而言,在花了很多时间弄清楚我的问题是什么之后(甚至责怪PyCharm的新版本! :) ) 我意识到我做了一些愚蠢的事情,我的BitBucket存储库超过了2GB的限制,并自动转向只读存储库,这就是为什么我无法推送任何新提交。而且,这正是导致你得到同样的错误(403:无法访问URL。)

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

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

最终有效的是启动github Windows App。导航到设置->选项,瞧,登录用户是user1。单击从该用户注销并在本例中以所需用户身份登录user2

在此处输入图片描述

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

远程:拒绝用户/repo.git权限2。

这样做的问题是,在Windows和Mac上,它存储在缓存中,这是Github的密钥路径。

要在Mac上修复此问题,请执行此操作

git credential-osxkeychain erase

没有什么会在控制台提示。

然后做一个普通的推送,它应该让你从Github再次写下你的用户名和密码。

git commit -m "First Commit"

对于窗口使用,请参阅上面的答案^与存储的凭据

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

如果您可以使用SSH键启动,则URL以:

git@github.com:<YOUR REPO URL>

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

为用户提供写访问权限。

提供访问权限后。拉一次代码,然后推送。

如果需要,请确保您有足够的权限推送到存储库然后尝试运行这些命令

git config --global user.email youremail@domain.git config --global user.name usernamegit config --global user.password yourpassword

希望这能帮助别人

我有这个问题,因为我有代理,我无法访问我的存储库

C:\Users\YourUser\.gitconfig

删除废话代理,它应该工作

在此处输入图片描述

然后再试一次通过gitbash克隆

 git clone http://********************

在此处输入图片描述

我不知道以前是否有人提到过这一点。

我在使用比特桶时遇到了这个问题,我注意到一件事。例如,如果你有这个,

git push https://myrepo:myRepoPassword@bitbucket.org/myrepo/myrepo.git --all

注意里面的@,就在密码后面。看,如果你的密码以@结尾,你会有两个@@而不是一个。在我的例子中,是密码导致了这个问题。

这发生在我身上,因为存储库被禁用(存储库可以被所有者禁用,或者如果帐户不支付账单,Github可能会禁用帐户的所有私有存储库)。

因此,您应该联系存储库所有者并通知他存储库已禁用。

如果所有其他方法都失败了。请确保您没有存档您的项目。这是我的问题,将整个解决方案置于只读模式。

当您未接受电子邮件或github存储库帐户中的邀请链接时,可能会发生此403错误(拒绝访问)。

点击邀请链接后,可以使用以下命令添加远程仓库:

git remote add <name> <url>git push —set-upstream <repo_name> master

示例:

git remote add ProgrammingFoundationExam https://github.com/itprowhoami/ProgrammingFoundationExam.gitgit push --set-upstream ProgrammingFoundationExam master
  1. 检查你是否在正确的分支上git status
  2. 检查您的存储库权限(需要写入权限)

下面是解决方案

对于Windows,您可以在此处找到密钥:

控制面板>用户帐户>凭据管理器>Windows凭据>通用凭据

接下来,删除Github密钥。

在mac

1-在Finder中,搜索Keychain Access应用程序。

在Keychain Access中,搜索github.com.

3-找到github.com.的“互联网密码”条目

4-相应地编辑或删除条目。

使用管理员权限尝试以下命令。此命令解决了我的问题。希望它能解决您的问题。

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

我也有同样的问题。以上都不适合我。问题是Github阻止了我的写入权限。我已经更改了密码。现在我可以推送了。

任何没有用这些解决方案解决问题的人都遵循这个线程:

"当两个git帐户在同一台机器上使用时,会发生这种情况"https://stackoverflow.com/a/52046047/7861886

它有windows解决方案,我还在评论中为Mac用户添加了mac解决方案。

使git存储库从私有到公共。

我使用的是Mac,并得到了致命的错误:无法访问请求的URL返回错误:403。

我确实更改了我的GitHub帐户详细信息。

我必须为GitHub编辑我的钥匙串条目并将用户名更新为新用户名。您可以在MAC的热门搜索中轻松找到KeyChain。

我遇到了同样的问题,并注意到我试图推送分支的存储库是private。所以,尝试以下过程:

  1. 确保您可以访问该私有存储库

  2. Fork首先是存储库。您会注意到repository URL将包含您的GitHubusername

  3. 像这样克隆它-->git clone https://github.com/your-github-username/example-repository.git

  4. 在克隆的存储库文件夹中输入-->cd repository-directory

对克隆的存储库执行任何您想执行的操作。停留在相同的克隆存储库目录中移动到下一步

  1. 检查所有分支。这将列出可用的分支-->git branch

  2. 立即创建您的分支-->git checkout -b your-branch-name

  3. 运行git branch检查是否创建了分支

  4. 现在运行这个命令-->git add .

  5. 提交更改-->git commit -m "your message"

  6. 推你的分支-->git push origin your-branch-name

  7. 检查GitHub站点以确保您的分支现在被推送

仅此而已

这里有很多答案,但这解决了我的问题。

自2020年7如果您使用HTTPS,则必须使用访问GitHub的令牌身份验证

因此,您必须在配置文件设置页面中生成访问令牌并将其用作密码。选中写入存储库所需的框。

现在使用以下命令将您的用户名添加到repo:

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

当您尝试推送时,它会询问您的密码。输入您新生成的令牌。

如果您仍然无法推送,请使用Web界面将其作为个人存储库分叉以隔离任何权限问题。你将能够专注于解决身份验证问题。

当我们从github克隆某人存储库时发生了此错误。这可能很容易通过使用

更新源来解决

git远程设置url来源“您的存储库来源”

然后在这个应用

git push-f源主机

这可能对所有人都有帮助

我已经解决了这个权限被拒绝的问题:

1.将git升级到最新版本。

2.)通过git-bash中输入的命令将远程URL更改为格式“https://username@github.com /username/repo_name.git”“git远程set-url起源https://username@github.com /username/repo_name.git”

以前,我使用的是2.28版本,所以我没有收到登录屏幕提示。此外,通过更改url,我能够使用git-hub凭据登录并将更改推送到存储库

如果由于某种原因不允许SSH,则HTTPS也可以

要按HTTPS推送提交,您应该使用个人访问令牌并确保读和写Scopes中可用,这定义了个人令牌的访问权限。

在GitHub中设置如下。

输入图片描述

我也遇到过类似的错误

致命的:无法访问https://gitlab.com/xxxx/yyyy.git/请求的URL返回错误:403

我通过切换网络(通过更改IP)解决了这个问题。最初,我在系统中遇到了一个问题,然后我尝试使用新网络(通过使用移动热点)并进行git拉取,

我再次移回主网络,我能够毫无问题地执行所有git操作。

如果你用github得到403错误,

确保在创建令牌时检查所有复选框:

https://github.com/settings/tokens

我认为github令牌生成页面有设计缺陷。

对于windows转到"控制面板\用户帐户\凭据管理器"并删除图中所示的条目并使用用户名/密码推送。

凭证管理器

从CLI(命令行界面)访问Github时对密码身份验证的支持已于2021年8月13日删除,并将其替换为个人访问令牌。

创建个人访问令牌的步骤

默认情况下,令牌始终包含只读访问到GitHub上的所有公共存储库。因此,要给予推送或拉取和权限,您需要在生成访问令牌时选择适当的“范围”。

公共存储库的范围是public_repo的,私有存储库的范围是repo。具有这些范围之一的令牌是Git推送或拉取访问可能的最有限访问。

现在,当系统提示您输入用户名和密码时,请提供您的GitHub用户名和访问令牌来代替密码。

有关其他可用范围的描述,请参阅Github文档

如果没有其他方法,试试这个:

  • McOS而已
  1. 转到Finder,搜索Keychain Access
  2. Keychain Access中,搜索github.com
  3. 然后寻找internet password双击它。
  4. 双击后,查找show password,然后输入您的计算机密码以访问它。
  5. 您现在应该能够editdelete当前令牌。编辑令牌或删除令牌后,保存更改,您应该能够推送代码。

希望这有帮助。