我能够通过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
我刚刚遇到同样的问题,只是弄明白是什么原因。
Github似乎只支持ssh方式来读取和写入repo,虽然https方式也显示“Read&Write”。
因此,您需要将PC上的repo配置更改为ssh方式:
.git/config
文件url=
部分找到[remote "origin"]
entryurl=https://[email protected]/derekerdmann/lunch_call.git
改为url=ssh://[email protected]/derekerdmann/lunch_call.git
。也就是说,将@
符号之前的所有文本更改为ssh://git
config
文件并退出。现在你可以使用git push origin master
在GitHub上同步你的回购403代码是“禁止的”。服务器看到了您的请求并拒绝了它。您是否有权推送到该存储库?
我实际上有一个非常简单的解决方案。我所做的只是在克隆存储库后以不同方式编辑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
弄清楚了。我克隆了HTTPS。设置我的公共SSH密钥,通过SSH克隆,并通过SSH修复它。
在此之后,我们的“推送到Git”工作得很好。
我面临同样的错误,原因是愚蠢的 - 我没有权限提交到选定的存储库。我不知道我必须这样做
对于那些在使用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
对于任何好奇的人,我的mac机器vs lucid vm运行git 1.7.6 vs 1.7.0.4,并且完全相同的repo可以从我的mac(更新的git)推送但不是VM
相同的卷曲版本。也许一些较旧的git版本不支持https推送?
改变它
url=https://[email protected]/derekerdmann/lunch_call.git
至
url=ssh://[email protected]/derekerdmann/lunch_call.git
有用!
不要忘记“@”之前的“git”。
为了能够使用https
协议进行登录,您应该首先将您的身份验证凭据设置为git Remote URI:
git remote set-url origin https://[email protected]/user/repo.git
然后在尝试git push
时会要求您输入密码。
实际上,这是http身份验证格式。您也可以设置密码:
https://youruser:[email protected]/user/repo.git
您应该知道,如果您这样做,您的github密码将以纯文本形式存储在.git目录中,这显然是不可取的。
添加用户名作为URL的一部分,并且发生此错误是因为git命令正在命中http而不是https。所以设置网址
git remote set-url origin https://<username>@github.com/Path_to_repo.git
之后,系统将提示您输入密码:
什么对我有用:
我的回购是一个岔路口,仍然与父母回购挂钩。
git remote -v
会告诉你它是否是你的回购。
git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git
允许您将其重新配置为您的仓库,然后允许您推送。
这样做是为了临时修复
git push -u https://username:[email protected]/username/repo_name.git master
上述答案都不适用于我的enterprise
GitHub帐户。按照以下步骤通过ssh密钥生成方式进行推送。
通过访问您的git帐户创建一个回购。
生成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
更新:新的git版本似乎建议在创建新repo时不要有任何文件。因此,做一个空白的回购。
我想出了我自己对这个问题的看法。
问题不是将协议从https更改为ssl,而是设置Github全局用户名和电子邮件! (我试图推送到私人存储库。
git config --global user.email "[email protected]"
git config --global user.name "Your full name"
Github有专门用于解决此错误的页面:
https://help.github.com/articles/https-cloning-errors
在我的例子中,事实证明使用新版本的git(1.8.5.2)解决了这个问题。
我现在遇到了这个问题,事实证明我的服务器/etc/resolver.conf文件有一个错误的IP地址。可能会帮助别人。
这件事发生在我身上,因为我的同事意外地禁用了此存储库分叉的存储库。可能会检查以确保原始git(hub)repo实际上仍然存在。
这可能是一个会计问题。上游(私人)回购所有者的Github帐户可能不是财务。我已经看到客户的信用卡过期了。
对我有用的是从http改为ssh:
git remote rm origin
git remote add origin [email protected]:username/repoName.git
然后用git remote -v
检查一下
Sean's answer的一小部分。
您可以使用.git/config
命令而不是手动编辑git remote set-url
文件。
在你的情况下,它应该是:
git remote set-url origin ssh://[email protected]/derekerdmann/lunch_call.git
我发现它比使用点文件更容易,更干净。
我遇到过同样的问题。我的情况是:我在github上创建它之前在本地初始化了git repo,然后我尝试添加远程分支。我通过更改操作顺序解决了我的问题:在github网站上创建了一个repo,然后在本地进行了修改。但是他们不喜欢像我一样从命令行做所有事情。
编辑repo目录下的.git/config
文件
在url=
部分下找到[remote "origin"]
条目
将它从url=https://github.com/rootux/ms-Dropdown.git
更改为https://[email protected]/rootux/ms-Dropdown.git
其中USERNAME
是你的github用户名
其他建议切换到SSH的答案忽略了这一点。支持HTTPS,但您必须使用GITHUB密码登录,而不是SSH密码(这就是给出了同样错误的错误)。
我遇到了同样的问题,但确保在终端密码提示下使用我的实际GitHub密码修复了解决方案,没有对配置进行任何更改,也没有使用SSH。
重要的是要注意这一点,许多公共机构(例如我的学校)将阻止SSH,但允许HTTPS(这是我首先开始通过HTTPS克隆的唯一原因)。
希望能帮助其他人解决同样的问题......
Mac OS X上的错误和分辨率相同。
一切正常,直到我在GitHub上创建了一个新帐户并尝试推送
$ git push -u origin master
得到了错误:
remote:对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应用程序中删除与GitHub相关联的OLDUSER来解决此问题。然后push命令成功。
$ git push -u origin master
我认为@dewwaters对旧版本的答案是正确的。 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回答了这个问题。