Gitにプッシュするとエラーコード403の致命的エラーが返される:HTTPリクエストが失敗する


634

認証された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

3
回答として投稿するコメントを見てください。1.7.1で動作するようにしましたが、ユーザー/パスワードプロンプトの欠落の問題もありました。stackoverflow.com/a/9575906/805284への小道具...
sjas

2
ユーザーを確認する読み取った/リポジトリへの書き込みアクセス
セリーヌAussourd

22
今後、httpヘッダーの例を表示するときに「Authorization:Basic <stuff>」を貼り付けないでください。これをbase64でデコードしてパスワードを取得するのは簡単です。@mike:この質問を投稿してからgithubのパスワードを変更していない場合は、変更することをお勧めします。
FlipMcF 2013

4
@FlipMcFありがとうございます。知らなかった。パスワード変更済み。
マイク

6
@マイクNP。今私はそれに書いた小さなブログを恥知らずに宣伝します:goo.gl/bpae94
FlipMcF

回答:


836

同じ問題が発生し、原因を突き止めました。

Githubは、リポジトリを読み書きするssh方法のみをサポートしているようですが、https方法も「読み書き」を表示しました。

したがって、PCのリポジトリ設定をsshに変更する必要があります。

  1. .git/configrepoディレクトリの下のファイルを編集します
  2. url=セクションの下のエントリを見つける[remote "origin"]
  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でリポジトリを同期するために使用できます

56
これは、read + write sshアドレスの代わりにgit読み取り専用アドレス(ログインしていないときのデフォルト)でクローンを作成するときによく発生します。
Nitrodist

43
.git/configはもっと似ていましたがurl=https://github.com/mynickname/my_repo.git、私もそれを同じように変更url=ssh://git@github.com/mynickname/my_repo.gitし、トリックを行いました
ギヨームフランドル

12
git remote set-urlコマンドでリポジトリURLを変更できます。以下の私の答えを参照してください。
fetsh

7
または、コマンドラインから次のように変更しますgit remote set-url <name> git@github.com:<username>/<repo>.git
iGbanam

42
ssh以外のソリューションを探している方は、他のいくつかの回答をここで確認してください。httpsのURLにユーザー名を追加すると機能するようです。(https:// @ github.com / ...がUNAME@github.com / ...になるように構成URLを変更します
Cyrus

431

httpsプロトコルを使用して確実にログインできるようにするには、最初に認証資格情報をgit リモート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ディレクトリにプレーンテキストで保存されることに注意してください。これは明らかに望ましくありません。


12
SSHが職場でブロックされたため、HTTPSを使用する必要があります。ユーザー名を追加すると問題が解決します。
デビッドプール

32
これは受け入れられる答えになるはずです。コマンドラインインターフェイスがある場合に、構成ファイルを手動で編集する理由はありません。
スティーブベネット

4
また、私にとって、この方法(username @ github ...)はパスワードを要求して機能しましたが、ssh:// git @ github ...は公開鍵認証を期待して失敗しました。
スティーブベネット

1
動作し、受け入れられた答えになるはずです!特にsshが機能しない環境では、この方法が適しています。ありがとう!
AndreasEK 2013年

3
@Achintそれは認証フォーマットです。あなたもあなたのパスワードを設定することができhttps://youruser:password@github.com/user/repo.gitたにもかかわらず、セキュアではない
チアゴMacedo

113

ショーンの答えへの小さな追加。

.git/configファイルを手動で編集する代わりに、git remote set-urlコマンドを使用できます。

あなたの場合、それは:

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

ドットファイルをいじるよりも、簡単でわかりやすいと思います。


これが単なる古い投稿で、gitが変更されたかどうかはわかりませんが、今日のように、問題を修正するためにgit remote set-url origin ssh://git@github.com:derekerdmann/lunch_call.git、github.comとリポジトリ名の間のコロンを使用する必要がありました
KevinL

56

.git/configrepoディレクトリの下のファイルを編集します

url=セクションの下のエントリを検索[remote "origin"]

からurl=https://github.com/rootux/ms-Dropdown.gitに 変更https://USERNAME@github.com/rootux/ms-Dropdown.git

USERNAMEあなたのgithubユーザー名はどこですか


この答えは私の問題には当てはまりませんでした。私のURL .git/configは ` github.com/myrepo/subproject 'に設定されています。
キロジュール2015

Android Studioでこの問題が発生しました。正常に動作します。
AndroidDev

46

SSHへの切り替えを提案する他の回答は、要点を逃しています。HTTPSはサポートされていますが、SSHパスフレーズではなく、GITHUBパスワードでログインする必要があります(これにより、まったく同じエラーが発生していました)。

私は同じ問題を抱えていましたが、端末のパスワードプロンプトで実際のGitHubパスワードを使用するようにすると、構成を変更したり、SSHを使用したりすることなく解決策が修正されました。

これに注意することが重要な理由は、多くの公共機関(私の学校など)がSSHをブロックしますが、HTTPSを許可するためです(これが最初にHTTPSを介して複製を開始した唯一の理由です)。

同じ問題を抱えている他の人を助けることを願っています...


1
しかし、なぜ?以前はそうする必要はありませんでした。証明書は失効しましたか、それとも何か?
Thufir

確かではありませんが、私は専門家ではありません。それが私の場合にうまく機能する方法です:)
BMB

同じ@Thufir。なぜこれが突然機能したのか、私にはわかりません。
ニック・マニング

ブラウザでユーザー名とパスワードを使用して問題なくログオンします。しかし、私がしようとするとgit pushと、auとpの入力を求められ、その結果、アクセス権が拒否されます。
オマー

26

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

しかし、そうではありませんでした。

キーチェーンアクセスアプリからGitHubに関連付けられているOLDUSERを削除することで修正しましたを[パスワード]セクションの。その後、pushコマンドが成功しました。

$ git push -u origin master

参照


キーチェーンアクセスアプリからのOLDUSERの削除は私にとってはうまくいった
Augusto Triste

1
同じエラーが発生しましたが、関連する理由が異なるため、別の解決策が必要でした。書き込みアクセス権がない(私は共同作業者ではない)リポジトリにプッシュしようとしていました。これは私のではないレポに貢献する方法についての私の知識の欠如によるものでした。新しいブランチを作成して、プルリクエストを実行できると思いました。そうではありません。最初にレポをフォークして、フォークで変更を加えてから、フォークしたレポから元のレポにプルリクエストを実行する必要があります。おそらく私の側の愚かな間違いですが、私がそれを作ることができれば、他のn00bsもできると確信しています。:)
Neo

23

Windowsを使用している場合、Windowsが外部リポジトリ(この場合はgithub)の認証情報を独自のストレージに保存するため、これが発生することがあります。また、そこに保存された資格情報は、現在必要な資格情報とは異なる場合があります。

ここに画像の説明を入力してください

この問題を回避するには、このストレージでgithubを見つけて、保存されている認証情報を削除します。この後、gitをプッシュしている間、資格情報が要求され、プッシュできるようになります。


「Windows資格情報マネージャーを確認してcontrol panel > user accounts > credential manager > Windows credentials > Generic credentials、この投稿の詳細の下にあるgithubエントリを削除する必要がある場合があります。stackoverflow.com/ a / 37450495
Miguel

これは私にとってはうまくいき、2日間も苦労して、ようやく解決に至りました。どうもありがとうございました。
Sufiyan Ansari

1
あなたは私の命を救いました!
writeToBhuwan 2018年

1
私はこの問題に1か月以上直面しました。ありがとう
Samson Nzuki

1
天才。どうもありがとう
Vinod Kumar

18

これは私のために働く-:

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

それが役に立てば幸い


1
良くやった。セットユーザー!
marlonpya 2017

1
このソリューションは、CentOS 6.10 x86のgit v1.7に役立ちました。(SSHキーの代わりに)パスワードプロンプトが表示されることを期待していましたが、表示されました(リモートURLの<username>@github.comに付加することにより)。ありがとうございました!
バルカンレイヴン

17

@deepwatersは古いバージョンに対して正しい答えを得たと思います。HTTPS URLにはユーザー名が必要です。私はgit 1.7.0.4を持っていgit push origin masterて、追加するまでパスワードを要求することすらしませんでした。



11

403コードは "Forbidden"です。サーバーはあなたのリクエストを見て拒否しました。そのリポジトリにプッシュする権限がありますか?


1
私と友人は同じ問題を抱えています。レポは私のもので、彼はプッシュできません。これをどのように修正しますか?
ギブソン2014

パーミッションを取得する方法
バワンタ

9

私は実際にこれを非常に簡単に修正しました。私がやったのは、リポジトリのクローンを作成した後でgit configファイルを別の方法で編集することだけでした。リモート原点URLは、デフォルトで編集に必要なものであるのconfigファイル。以下のようになります

[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

^これ(または以下のバリエーションのいずれか)
オースティンフランス

github.comがユーザー名を修正する前に、ユーザー名を追加してください。
シェーン

@ÅdəəlÅhmådを歓迎します。他の多くの人が理解できるように、回答を賛成して努力をサポートします。
larrytech

8

理解した。HTTPSでクローンを作成しました。SSH公開鍵を設定し、SSHを介して複製し、SSHを介してプッシュすることで修正されました。


うーん...でも、たとえば社内ファイアウォールのために、https以外は何も使用できない場合はどうなりますか?
filofel

1
本当に分からない。私は常にSSHでクローンを作成しています。
マイク、

後世のために(私はタイムスタンプに気づきました)、filofelのコメントに関して:上記の私の回答をチェックしてください。私が学校で言ったのと同じ制限がありますが、ターミナルプロンプトに間違ったパスワード/パスフレーズを入力していたことがわかりました。それが同じ問題を持つ他の人を助けることを願っています。
BMB

8
  1. リポジトリをクリックします
  2. 右側にある「設定」をクリックします
  3. 左側のオプションパネルで、[共同編集者]をクリックします
  4. GitHubで知っている人の名前を追加する
  5. [共同編集者を追加]をクリックします

この後、「Push to Git」は問題なく動作しました。


ありがとうございました!本当に役に立ちました!
sailfish009 2017年


7

一時的な修正のためにこれを行います

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


シンプルで機能する
Bawantha

6

私は同じエラーに直面し、原因は愚かでした-選択したリポジトリにコミットする権限がありませんでした。私がしなければならないことを知りませんでした

  1. 最初に選択したプロジェクトをフォークする
  2. ローカルでリポジトリを複製
  3. ローカルで変更をコミットする
  4. githubクローンに変更をプッシュする
  5. アップストリームへのプルリクエストをリクエストする

https://help.github.com/categories/63/articlesで説明されています


1
ばかげているわけではありませんが、これは、公開リポジトリへのほとんどの初めての貢献者にとって正しい答えです。
DaReal

5

sshXiaoによる)またはhttp url を使用しているときに権限が拒否された403エラーが発生した場合は、次のコマンドを試してください。

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

>git config --unset-all credential.helper

管理者権限あり

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

今度はGitがログインとパスワードを要求するたびに。からそれらを保存しますgit config --global credential.helper store
CoolMind 2018年

4

から変える

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

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

できます!

「@」の前の「git」を忘れないでください。


それは私のために働きました(プロキシの後ろのRStudioでCentOSサーバーを使用して)。最初にプロキシを設定:git config --global http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port次に、コマンドgit remote set-url originを使用してアドレスを切り替えます。
アレクサンドルジョージ

3

私のMacマシンとlucid vmはgit 1.7.6対1.7.0.4で動作し、私のMac(新しいgit)からまったく同じレポをプッシュできましたが、VMではできませんでした。

同じカールバージョン。おそらくいくつかの古いgitバージョンはhttpsプッシュをサポートしていませんか?


はい、githubへのhttpsプッシュはここで機能します(パスワード付きのプロキシを介しても)。私はgit 1.7.3を使用しています。私にとっては、間違ったパスワードを入力したため、最初に失敗しました。
guettli 2012

9
これはgit 1.7.1で動作しますが、注意する必要があることが1つあります(そして、最初の試行でそれを逃してしまいました)。HTTPS-URLでユーザー名を指定します。つまり、url=https://username@github.com/username/repo.git
lwho

3

URLの一部としてユーザー名を追加します。このエラーは、gitコマンドがhttpsではなくhttpにヒットするために発生します。だからURLを設定

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

その後、パスワードの入力を求められます。


3

私のために働いたもの:

私のレポはフォークであり、まだ親のレポにリンクされていました。

git remote -v

それがあなたのレポかどうかを教えてくれます。

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

リポジトリに再構成してからプッシュすることができます。


3

上記の回答のいずれも、私のenterpriseGitHubアカウントでは機能しませんでした。次の手順に従って、sshキー生成方法でプッシュします。

gitアカウントにアクセスして、リポジトリを作成します。

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

git cloneフォルダーにcdして、次のようにします。

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バージョンでは、新しいリポジトリが作成されている間はファイルを作成しないことを推奨しているようです。したがって、空のリポジトリを作成します。


2

私はこの問題の独自のバリエーションを見つけました。

問題はプロトコルをhttpsからsslに変更することではなく、代わりにGithubグローバルユーザー名と電子メールを設定することでした。(私はプライベートリポジトリにプッシュしようとしていました。

git config --global user.email "your_github_email_@email.com"

git config --global user.name "Your full name"

私にはうまくいきません。Configが集合、使用されているgithub.comを持たず、「@」で...
SES


1

私は今この問題を抱えていて、私のサーバーの/etc/resolver.confファイルに不正なIPアドレスが含まれていることがわかりました。他人を助けるかもしれません。


1

これは、同僚が誤ってこのリポジトリの分岐元のリポジトリを無効にしたために起こりました。元のgit(hub)リポジトリが実際にまだ存在することを確認するためにチェックするだけかもしれません。


1

会計上の問題かもしれません。上流(プライベート)リポジトリの所有者のGithubアカウントは、財務的でない場合があります。これは、クライアントのクレジットカードの有効期限が切れたところです。


1

私のために働いたことはhttpからsshに変わっています:

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

それで確認してください git remote -v


1

同じ問題がありました。私の場合は、githubで作成する前にgit repoをローカルで初期化してから、リモートブランチを追加しようとしました。アクションの順序を変更して問題を解決しました。githubサイトにリポジトリを作成し、ローカルでそれを初期化しました。しかし、私と同じようにコマンドラインからすべてを実行するのが好きな人はそうではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.