我能够通过 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
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 方式来读写 repo,虽然 https 方式也显示“Read&Write”。
因此,您需要将 PC 上的 repo 配置更改为 ssh 方式:
在你的 repo 目录下编辑 .git/config 文件。在 [remote "origin"] 部分下找到 url=entry。把它从:url=https://MichaelDrogalis@github.com/derekerdmann/lunch_call.git 改成:url=ssh://git@github.com/derekerdmann/lunch_call.git 也就是把@符号前面的所有文字都改到 ssh://git 保存配置文件并退出。现在你可以使用 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 目录中,这显然是不可取的。
https://youruser:password@github.com/user/repo.git
Sean's answer 的一个小补充。
您可以使用 git remote set-url
命令,而不是手动编辑 .git/config
文件。
在您的情况下,它应该是:
git remote set-url origin ssh://git@github.com/derekerdmann/lunch_call.git
我发现它比处理点文件更容易、更干净。
help.github.com:更改远程的 URL
git remote set-url origin ssh://git@github.com:derekerdmann/lunch_call.git
编辑您的 repo 目录下的 .git/config
文件
在 [remote "origin"]
部分下找到 url=
条目
将其从 url=https://github.com/rootux/my-repo.git
更改为 https://USERNAME@github.com/rootux/my-repo.git
其中 USERNAME
是您的 github 用户名
.git/config
中的 URL 设置为`github.com/myrepo/subproject'。
建议切换到 SSH 的其他答案有点忽略了这一点。支持 HTTPS,但您必须使用 GITHUB 密码登录,而不是您的 SSH 密码(这是给我同样的错误的原因)。
我遇到了同样的问题,但确保在终端密码提示符下使用我的实际 GitHub 密码修复了解决方案,而无需更改配置或诉诸 SSH。
重要的是要注意这一点,因为许多公共机构(例如我的学校)会阻止 SSH,但允许 HTTPS(这是我首先开始通过 HTTPS 进行克隆的唯一原因)。
希望对遇到同样问题的人有所帮助...
git push
时,系统提示我输入 au 和 p,结果是权限被拒绝......你知道我错过了什么吗?
如果您使用的是 Windows,有时可能会发生这种情况,因为 Windows 将外部 repo(在我们的例子中为 github)的凭据存储在自己的存储中。保存在那里的凭据可能与您现在需要的不同。
https://i.stack.imgur.com/XzOUh.png
所以为了避免这个问题,只需在这个存储中找到 github 并删除保存的凭据即可。在此之后,在推送时 git 将请求您的凭据并允许您推送。
control panel > user accounts > credential manager > Windows credentials > Generic credentials
下的 github 条目”此帖子中的详细信息:stackoverflow.com/a/37450495
Mac OS X 上的错误和解决方法相同。
一切正常,直到我在 GitHub 上创建了一个新帐户并尝试推送
$ git push -u origin master
并得到错误:
remote:对 NEWUSER/NEWREPO.git 的权限拒绝 OLDUSER。致命:无法访问“https://github.com/NEWUSER/NEWREPO.git/”:请求的 URL 返回错误:403
它应该通过为全局或当前 repo 设置 user.name 来修复
$ git config –-global user.name NEWUSER
$ git config user.name NEWUSER
但它没有。
我通过从密码部分下的钥匙串访问应用程序中删除与 GitHub 关联的 OLDUSER 来修复它。然后推送命令成功。
$ git push -u origin master
这对我有用-:
git remote set-url origin https://username@github.com/user/repo.git
希望能帮助到你
github.com
之前添加 <username>@
)。谢谢!
我认为@deepwaters 得到了旧版本的正确答案。 HTTPS URL 需要有用户名。我有 git 1.7.0.4 并且 git push origin master
在我添加之前甚至不会要求输入密码。
升级你的 git。 GitHub 在 https://help.github.com/articles/error-the-requested-url-returned-error-403 回答了这个问题。
403 代码是“禁止”。服务器看到您的请求并拒绝了它。您是否有权推送到该存储库?
弄清楚了。我通过 HTTPS 克隆。设置我的公共 SSH 密钥、通过 SSH 克隆并通过 SSH 推送修复了它。
我遇到了同样的错误,原因很愚蠢——我没有提交到选定存储库的权限。我不知道我必须
fork 选定的项目首先克隆存储库在本地提交我的更改在本地推送更改到我的 github 克隆请求 pull 请求到上游
如https://help.github.com/categories/63/articles中所述
实际上,我对此有一个非常简单的解决方法。我所做的只是在克隆存储库后以不同的方式编辑 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
这样做是为了临时修复
git push -u https://username:password@github.com/username/repo_name.git master
单击您的存储库 在右侧,单击“设置” 在左侧选项面板上,单击“协作者” 在 GitHub 中添加您知道的人名 单击“添加协作者”
在此之后,我们的“推送到 Git”工作正常。
改变它
url=https://MichaelDrogalis@github.com/derekerdmann/lunch_call.git
至
url=ssh://git@github.com/derekerdmann/lunch_call.git
有用!
不要忘记“@”之前的“git”。
git config --global http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
然后使用命令git remote set-url origin
切换地址。
这里有很多答案,但这就是解决我的问题的原因。
自 2020 年 7 月起,如果您使用 HTTPS,则必须使用 Token authentication to access GitHub。
因此,您必须在您的个人资料设置页面中generate an access token并将其用作您的密码。
现在使用以下命令将您的用户名添加到 repo:
git remote set-url origin https://yourusername@github.com/user/repo.git
当您尝试推送时,它会询问您的密码。输入您新生成的令牌。
如果您仍然无法推送,请尝试将其作为个人 repo 以调试任何身份验证问题。
对于那些在使用 ssh(根据 Xiao)或 http url 时出现权限被拒绝 403 错误的人,请尝试以下命令
>git config --global --unset-all credential.helper
>git config --unset-all credential.helper
具有管理员权限
>git config --system --unset-all credential.helper
git config --global credential.helper store
保存它们。
以上答案均不适用于我的 enterprise
GitHub 帐户。按照以下步骤通过 ssh 密钥生成方式推送。
通过访问您的 git 帐户创建一个 repo。
生成 ssh 密钥:
ssh-keygen -t rsa -C "your_email@example.com"
将文件 ~/.ssh/id_rsa.pub 的内容复制到 GitHub 帐户设置中的 SSH 密钥。测试 SSH 密钥:
ssh -T git@github.com
clone 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 -A
git commit -am "my update msg"
git push -u origin master
更新:新的 git 版本似乎建议在创建新仓库时不要有任何文件。因此制作一个空白回购。
id_rsa
和 id_rsa.pub
,否则,您将继续收到错误 Permission denied (publickey,keyboard-interactive). fatal: The remote end hung up unexpectedly
。因此,要么将您的密钥重命名为默认名称,要么使用 this answer 阐明如何设置 ssh 密钥的自定义路径。
下面是解决方案
对于 Windows,您可以在此处找到密钥:
控制面板 > 用户帐户 > 凭据管理器 > Windows 凭据 > 通用凭据
接下来,删除 Github 密钥。
在 mac
1-在 Finder 中,搜索 Keychain Access 应用程序。
2在钥匙串访问中,搜索 github.com。
3-找到 github.com 的“互联网密码”条目。
4-相应地编辑或删除条目。
什么对我有用:
我的回购是一个叉子,仍然与父母回购相关联。
git remote -v
会告诉你它是否是你的回购。
git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git
允许您将其重新配置到您的存储库,然后允许您推送。
对于任何好奇的人,我的 mac 机器与 lucid vm 运行 git 1.7.6 与 1.7.0.4,完全相同的 repo 可以从我的 mac(较新的 git)推送,但不能从 VM 推送
相同的卷曲版本。也许一些较旧的 git 版本不支持 https 推送?
url=https://username@github.com/username/repo.git
将用户名添加为 URL 的一部分,发生此错误是因为 git 命令访问的是 http 而不是 https。所以设置网址
git remote set-url origin https://<username>@github.com/Path_to_repo.git
之后将提示您输入密码:
使用管理员权限尝试以下命令。这个命令解决了我的问题。希望它能解决您的问题。
git config --system --unset-all credential.helper
我想出了我自己对这个问题的看法。
问题不是将协议从 https 更改为 ssl,而是设置 Github 全局用户名和电子邮件! (我试图推送到私有存储库。
git config --global user.email "your_github_email_@email.com"
git config --global user.name "Your full name"
Github 有专门用于解决此错误的页面:
https://help.github.com/articles/https-cloning-errors
就我而言,事实证明使用新版本的 git (1.8.5.2) 解决了这个问题。
没有使用这些解决方案解决问题的任何人都遵循此线程:
“当在同一台机器上使用两个 git 帐户时会发生这种情况”https://stackoverflow.com/a/52046047/7861886
它有 Windows 解决方案,我还在评论中为 Mac 用户添加了 Mac 解决方案。
.git/config
更像url=https://github.com/mynickname/my_repo.git
但我也像url=ssh://git@github.com/mynickname/my_repo.git
一样改变了它,它成功了git remote set-url
命令更改 repo url。请看下面我的回答。git remote set-url <name> git@github.com:<username>/<repo>.git
从命令行更改它