Git에 푸시하여 오류 코드 403을 반환하며 치명적 : HTTP 요청이 실패했습니다.
인증 된 HTTPS를 통해이 저장소의 사본을 복제 할 수있었습니다. 몇 가지 커밋을 수행했으며 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는 https 방식도 'Read & Write'를 표시했지만 저장소를 읽고 쓰는 ssh 방식 만 지원하는 것 같습니다.
따라서 PC의 repo 구성을 ssh 방식으로 변경해야합니다.
.git/config
repo 디렉토리에서 파일 편집url=
섹션에서 항목 찾기[remote "origin"]
- 에서 변경
url=https://MichaelDrogalis@github.com/derekerdmann/lunch_call.git
을url=ssh://git@github.com/derekerdmann/lunch_call.git
. 즉,@
기호 앞의 모든 텍스트 를ssh://git
- Save
config
file and quit. now you could usegit push origin master
to sync your repo on GitHub
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.
One small addition to Sean's 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.
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
to https://USERNAME@github.com/rootux/ms-Dropdown.git
where USERNAME
is your github user name
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...
Same error and resolution on Mac OS X.
Everything was working fine till I created a new account on GitHub and tried to push
$ git push -u origin master
And got the error:
remote: Permission to NEWUSER/NEWREPO.git denied to OLDUSER. fatal: unable to access ‘https://github.com/NEWUSER/NEWREPO.git/': The requested URL returned error: 403
It should have fixed by setting the user.name either for global or current repo
$ git config –-global user.name NEWUSER
$ git config user.name NEWUSER
But it didn’t.
I got it fixed by deleting the OLDUSER associated with GitHub from Keychain Access app under Passwords section. Then the push command went successful.
$ git push -u origin master
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.
This works for me -:
git remote set-url origin https://username@github.com/user/repo.git
Hope it helps
Upgrade your git. GitHub has answered this question at https://help.github.com/articles/error-the-requested-url-returned-error-403.
If you are using windows, sometimes this may happen because Windows stores credentials for outer repo (in our case github) in its own storage. And credentials that saved there can be different from those you need right now.
So to avoid this problem, just find github in this storage and delete saved credentials. After this, while pushing git will request your credentials ans will allow you to push.
A 403 code is "Forbidden". The server saw your request and refused it. Do you have permission to push to that repository?
I actually had a very simple fix to this. All i did was edit the git config file differently after cloning the repository. The remote origin url is what you need to edit in your default config file. It should look like seen below
[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
Figured it out. I cloned over HTTPS. Setting up my public SSH keys, cloning over SSH, and pushing over SSH fixed it.
Just add you username into url like this : https://islam9@github.com/islam9/bootstrap-rtl
please check: http://islamkhalil.wordpress.com/2012/12/06/github-error-pushing-to-git-returning-error-code-403-fatal/
- Click on your repository
- On the right hand side, click on "Settings"
- On the left hand side option panel, click on "Collaborators"
- Add the person name you know in GitHub
- Click "Add Collaborators"
After this our "Push to Git" worked fine.
I faced the same error and the cause was stupid - I did not have privileges to commit to selected repository. I did not know that I have to
- fork selected project first
- clone repository locally
- commit my changes locally
- push changes to my github clone
- request pull request to upstream
as described in https://help.github.com/categories/63/articles
For those having permission denied 403 error while using ssh(according to Xiao) or http urls try these commands
>git config --global --unset-all credential.helper
>git config --unset-all credential.helper
with administrator rights
>git config --system --unset-all credential.helper
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?
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 "@".
Add the user name as part of the URL and This error happens because the git command is hitting http instead of https. So set the url
git remote set-url origin https://<username>@github.com/Path_to_repo.git
After which you will be prompted for password:
What worked for me:
My repo was a fork and still linked to the the parents repo.
git remote -v
Will tell you if it is your repo or not.
git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git
Allows you to reconfigure it to your repo and then allow you to push.
Do this for a temporary fix
git push -u https://username:password@github.com/username/repo_name.git master
None of the above answers worked for my enterprise
GitHub account. Follow these steps for pushing via ssh key generation way.
Create a repo by visiting your git account.
Generate ssh key:
ssh-keygen -t rsa -C "your_email@example.com"
Copy the contents of the file ~/.ssh/id_rsa.pub to your SSH keys in your GitHub account settings. Test SSH key:
ssh -T git@github.com
clone the repo:
git clone git://github.com/username/your-repository
Now cd to your git clone folder and do:
git remote set-url origin git@github.com:username/your-repository.git
Now try editing a file (try the README) and then do:
git add -A
git commit -am "my update msg"
git push -u origin master
Update: new git version seems to recommend not to have any file while new repo is created. Hence make aa blank repo.
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"
Github has page dedicated to troubleshooting this error:
https://help.github.com/articles/https-cloning-errors
In my case it turned out that using a new version of git (1.8.5.2) solved this problem.
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.
This happened to me because my coworker accidentially disabled the repository that this repository was forked from. Just might check to ensure that the original git(hub) repo actually still exists.
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.
what worked for me is changing from http to ssh:
git remote rm origin
git remote add origin git@github.com:username/repoName.git
then check it with git remote -v
I had the same issue. My case was: I'd initialized git repo locally before I created it on github, then I tried to add remote branch. I solved my issue by changing the order of actions: created a repo on github site, then inited it locally. But it's not the case fr them who like to do all from command line as me.
'Development Tip' 카테고리의 다른 글
HTML5를 사용하는 사용자 정의 데이터 속성에 대한 jQuery 선택기 (0) | 2020.10.02 |
---|---|
이전 브랜치를 git checkout하는 방법이 있습니까? (0) | 2020.10.02 |
OPTIONS 경로에 CORS 헤더를 추가하면 브라우저가 내 API에 액세스 할 수없는 이유는 무엇입니까? (0) | 2020.10.02 |
소수점 이하 두 자리로 반올림하는 방법 (페이지 출력용) (0) | 2020.10.02 |
"위치 : 절대"요소를 중앙에 배치하는 방법 (0) | 2020.10.02 |