博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
github push403错误的处理
阅读量:7055 次
发布时间:2019-06-28

本文共 13288 字,大约阅读时间需要 44 分钟。

如果没有什么别的问题的话,推荐使用SSH的方式。请参考:http://stackoverflow.com/questions/7438313/pushing-to-git-returning-error-code-403-fatal-http-request-failed

241
119

I was able to clone a copy of this repo over HTTPS authenticated. I've made some commits and want to push back out to the GitHub server. Using Cygwin on Windows 7 x64.

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/refsfatal: HTTP request failed

Also set it up with verbose mode. I'm still pretty baffled.

C:\cygwin\home\XPherior\Code\lunch_call>set GIT_CURL_VERBOSE=1C:\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.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 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.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 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/refsfatal: HTTP request failed

These are the versions of git and curl that I have:

C:\Users\XPherior>git --versiongit version 1.7.4.msysgit.0C:\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
|
 
    
Look at the comment, which should be posted as an answer. Made it work with 1.7.1, had the missing User/Password prompt problem, too. Props to  ... –   
1  
check the user has read/write access to the repository –   
6  
In the future, don't paste "Authorization: Basic <stuff>" when showing example http headers. It's easy to base64 decode that and get your password. @mike: if you haven't changed your github password since you posted this question, I would suggest you do so. –   
1  
@FlipMcF Thanks man. Was unaware. Password changed. –   
1  
@Mike NP. Now I get to shamelessly promote a little blog I wrote on it:  –   

27 Answers

379accepted

I just got the same problem and just figured out what's cause.

Github seems only supports ssh way to read&write the repo, although https way also displayed 'Read&Write'.

So you need to change your repo config on your PC to ssh way:

  1. edit .git/config file under your repo directory
  2. find url=entry under section [remote "origin"]
  3. change it from url=https://MichaelDrogalis@github.com/derekerdmann/lunch_call.git tourl=ssh://git@github.com/derekerdmann/lunch_call.git. that is, change all the texts before @ symbol to ssh://git
  4. Save config file and quit. now you could use git push origin master to sync your repo on GitHub
|
 
31  
This is often encountered when you clone with the git read-only address (which is the default when you aren't logged in) instead of the read+write ssh address. –    
15  
My .git/config was more like url=https://github.com/mynickname/my_repo.git But I also changed it like url=ssh://git@github.com/mynickname/my_repo.git and it did the trick –   
6  
You can change a repo url with git remote set-url command. See my answer below. –   
4  
or simply change it from the command line using git remote set-url <name> git@github.com:<username>/<repo>.git –   
18  
For those looking for a non ssh solution, check a few of the other answers here. Adding your username to the https url seems to work. (change config url so that https://@github.com/... is ) –  
160

To definitely be able to login using https protocol, you should first set your authentication credential to the git Remote URI:

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

Then you'll be asked for a password when trying to git push.

In fact, this is on the http authentication format. You could set a password too:

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

You should be aware that if you do this, your github password will be stored in plaintext in your .git directory, which is obviously undesirable.

|
 
4  
SSH blocked at work so I have to use HTTPS. Adding the username fixes my issues. –   
3  
This should be the accepted answer. No reason to manually edit a config file when there's a command line interface to it. –   
1  
Also, for me, this way (username@github...) asked for password and worked, whereas ssh://git@github... failed expecting public key auth. –   
    
works and should be the accepted answer! Especially in environments in which ssh does not work, this is the way to go. Thanks! –   
1  
@Achint it's an authentication format. You could set your password toohttps://youruser:password@github.com/user/repo.git despite  –   
63

One small addition to Seans answer.

Instead of editing .git/config file manually, you can use git remote set-url command.

In your case it should be:

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

I find it easier and cleaner, than messing around with dot-files.

|
 
    
I don't know if this is just an old post and git has changed, but as today to fix the problem I had to use git remote set-url origin ssh://git@github.com:derekerdmann/lunch_call.git with a colon between the github.com and the repo name –   
27

The other answers that suggest switching to SSH sort of miss the point. HTTPS is supported, but you must log in with you GITHUB password, not your SSH passphrase (which was what was giving me the same exact error).

I was having the same problem, but making sure to use my actual GitHub password at the terminal password prompt fixed the solution with no alteration to the config, or resorting to SSH.

The reason it is important to note this, is many public institutions (such as my school) will block SSH, but allow HTTPS (which is the only reason I started cloning over HTTPS in the first place).

Hope that helps anyone else having the same issue...

|
 
    
but why? I didn't have to do that in the past. Did a certificate expire, or something? –   
    
Not sure, I'm not an expert, that's just how I got it to work in my case :) –   
16

Edit .git/config file under your repo directory

Find url= entry under section [remote "origin"]

Change it from url=https://github.com/rootux/ms-Dropdown.git tohttps://USERNAME@github.com/rootux/ms-Dropdown.git

where USERNAME is your github user name

|
 
12

I think @deepwaters got the answer correct for older versions. The HTTPS URL needs to have the username. I had git 1.7.0.4 and git push origin master wouldn't even ask for a password till I added it.

|
 
    
Yes, this is correct! –   
7

Upgrade your git. GitHub has answered this question at .

|
 
    
It's half the answer, for sure. Other half is what we have here. –   
6

Figured it out. I cloned over HTTPS. Setting up my public SSH keys, cloning over SSH, and pushing over SSH fixed it.

|
 
    
Hmmm... but what when you can't use anything but https, because of a corp firewall, for instance?... According to the github blog, the https access was added to github just for that purpose? –   
    
I really don't know. I always clone over SSH now. –   
    
Just for posterity (I noticed the timestamp), in regards to filofel's comment: Check out my answer listed above. I have the same restriction you mention, at my school, and found I was supplying the wrong password/passphrase to the terminal prompt. Hope it helps any others with the same issue. –    
4

Just add you username into url like this : 

please check: 

|
 
    
That worked for me too –   
4

A 403 code is "Forbidden". The server saw your request and refused it. Do you have permission to push to that repository?

|
 
    
Me and a friend are having the same problem. The repo is mine, and he can't push. How do we fix this? –  
2

For anyone curious, my mac machine vs lucid vm ran git 1.7.6 vs 1.7.0.4, and the exact same repo was pushable from my mac (newer git) but not the VM

Same curl version. Perhaps some older git versions don't support https pushes?

|
 
    
Yes, https push to github works here (even through proxy with password). I use git 1.7.3. For me, it failed first because I typed the wrong password. –   
5  
It works for me with git 1.7.1, but there is one thing you have to pay attention too (and that was what I missed in my first try): Give the user name in the HTTPS-URL, i.e.url=https://username@github.com/username/repo.git –   
2

change it from

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

to

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

It works!

Do not forget the "git" before the "@".

|
 
2

Sometimes there is nothing wrong with settings, and there are some problems on github servers.

 - current status of github :)

|
 
    
You can also get GitHub status updates . –   
1

I had this problem right now, and it turned out that my server /etc/resolver.conf file had a bad ip address. Might help others.

|
 
1

It could be an accounting issue. The Github account of the upstream (private) repo owner may not be financial. I've seen this where the client's credit card expired.

|
 
1

I figured out my own variation of this problem.

The issue was not changing the protocol from https to ssl, but instead, setting the Github global username and email! (I was trying to push to a private repository.

git config --global user.email "your_github_email_@email.com"git config --global user.name "Your full name"
|
 
    
Does not work for me. Config has been set, use .. with no '@' in it –   
1

After changing https to http within gitbox app, it worked for me.

|
 
    
got 403 while accessing by http. –   

转载地址:http://uilol.baihongyu.com/

你可能感兴趣的文章
物联网安全:物联网从开源能够学到什么?
查看>>
《机器人自动化:建模、仿真与控制》——1.3 伺服电动机
查看>>
Gartner:企业重新思考软件安全战略
查看>>
热点推荐:2016年热门技术方向预测
查看>>
混合云平台为何更适合现代应用开发
查看>>
Linux交换空间(swap space)的那些优缺点
查看>>
我们该用什么姿态拥抱互联网+时代
查看>>
补天白帽大会五大热点前瞻
查看>>
PHP 性能分析与实验:性能的微观分析
查看>>
你需要了解自动化运维的设计思想
查看>>
说说Python中的闭包 - Closure
查看>>
大数据融入百姓生活 或将结束高考“一锤定音”
查看>>
理解RxJava线程模型
查看>>
企业IT运维效率低——如何破?
查看>>
DR Rapid:打通备份数据流动的任督二脉
查看>>
T9000:一款专攻击Skype用户的恶意软件
查看>>
以色列拟建全球最高太阳能塔 占地约300公顷
查看>>
国外智慧城市发展迅速 我国智能化建筑需努力
查看>>
骞云科技SmartCMP v3.0正式发布!
查看>>
企业级WLAN市场掀起新一波并购浪潮
查看>>