2016-09-28 13 views
3

Eclipse/EGit/Githubは昨日すべて正常に動作していました。私は今朝Eclipseから "あなたのアップデートがあります"というメッセージを受け取り、すべてのソフトウェアアップデートを行った。Eclipse:Githubにプッシュできません。承認は失敗しました

プライベートプロジェクトからGithub(チーム - >プル)の変更を取得しようとしたときに、認証エラーが発生しました。 Fine、per this answerウィンドウ - >設定 - >一般 - >セキュリティ - >セキュアストレージ - >コンテンツ - >削除でセキュリティ資格情報を削除しました。プルしようとすると、プロンプトで自分の資格情報を入力し、それは正常に働いた。

私は、コマンドラインに移動し、入力した場合、「gitのプッシュ起源: - しかし、私は(チーム/プッシュ上流に)私は、「401認証が必要起源、https://github.com/username/myproject.gitをMyProjectとするプッシュ失敗しました」GETプッシュしよう

マスター "それは正常に動作します。

Eclipseには何か悪いことがあるようです。誰でもEclipse内からこの認証エラーを回避する方法を知っていますか?

(私はこれまでのところ、私が知っているように、完全にパッチおよび最新のEclipseのネオンを使用してWindows 10を使用しています。GitHubの上の2要素認証を使用していないよ。)

答えて

2

私も同じ問題を抱えていました。問題は最新のNeon Eclipseのjava.net.Authenticatorモジュールです。

According to Christian Halstrick

問題プッシュ中に2つの要求を取得し、(パックデータを含む)POSTまず、サーバに送信されることです。匿名で送信された最初のGET要求は、401(許可されていない)で拒否されます。オーセンティケータがインストールされると、java.netクラスはAuthenticatorを使用してユーザーに資格情報を要求し、要求を再試行します。しかし、これはボンネットの下で起こり、JGitのレベルコードではこれが起こることはありません。

次のリクエストはPOSTですが、JGitは最初のGETリクエストが匿名で行われたと考えているため、POSTリクエストに認証ヘッダーを追加しません。このPOSTはもちろん401で失敗しますが、このリクエストにはJGit(packファイル!)からストリームされる多くのボディデータが含まれているため、java.netクラスは認証ヘッダーでリクエストを再試行することはできません。プロセス全体が失敗します。

オーセンティケーターがインストールされていない場合は、状況が改善されます。最初の匿名GET要求は401で失敗し、これはJGitにバブルします。その後、JGitはユーザーに(インストールされたCredentialsProvidersの助けを借りて)資格情報を要求し、基本認証ヘッダーで再試行します。これが成功し、POSTリクエストが送信されると、JGitは、成功する認可について知っていて、正しいヘッダーをPOSTに直接追加します。要求は成功します。

EGitはGitの実装としてJGitを使用しています。

解決方法は、Eclipseのバージョンを変更することです。

私はSpring tool Suiteを使用しました。それは私のためにうまくいきました。 Springツールスイートは、オールインワンのEclipseベースのディストリビューションIDEにカスタマイズされています。

2

私はちょうどヘルプ/アップデートの確認でプレーンなEclipse更新を行い、問題は解決しました。

-1

問題に対する私の解決策。

  1. は私のプロジェクトのルートにナビゲートし、端末
  2. を開設EGitでGitのレポを削除
  3. git init
  4. git remote add github https://github.com/myusername/myrepo.git
  5. git add * - .gitignore
  6. git commit -am "Initial commit"
  7. を編集した後
  8. git push github master
  9. もう一度お戻しください。 :)

コマンドラインはうまく動作し、失望しません。

+0

これは疑問に対する答えではありません。なぜなら、ccleveはEGitを使用したいが、追加インストールするコマンドラインGITは使用したくないからです。 – Udo

+0

@Udo、あなたはWindowsユーザーの場合は正しいです。たぶん、これはLinux/Unixユーザにはいい解決策だと言いたいはずですが、gitコマンドラインを追加インストールする必要はありません。インストールするソフトウェアはgitだけです。追加するだけで、まったく同じ問題に直面している間、これは私にとって完璧な解決策でした。 – rafaelbattesti

+0

質問は、Linuxではなく、Windows 10でそれを行う方法でした。 – Udo

関連する問題