SourceTree + Bitbucketで認証エラーが出る場合の対処方法 on Windows
複合要因でなかなか面倒な SourceTree + Bitbucket の認証エラーの対策について、良く分かってない人(例えば自分)向けに情報をまとめておきます。
Windows 環境がターゲットの記事になります。
症状としては、SourceTree のGUIからリモートリポジトリにアクセスしようとすると、こんな感じのエラーが出るパターン。
- fatal: HttpsRequestException encounterd.
- remote: Invalid username or password
でも、ターミナルから直接 git コマンドを打てば認証も通るしPUSHもPULLもできる、というケース。
解決方法としては、2つのパターンがあります。
1つ目は、以下のサイトから「Git Credential Manager for Windows(以下、GCMW)」の最新版を入手してインストールすれる方法。なお、その際には git も一緒にインストールされるので、SourceTree からそちらを使わせる設定にする必要アリ。
細かな設定手順は後述します。
2つ目は、すでにGCMW導入済みの環境で、設定も正しいのに認証できないパターン。その場合は、SourceTree の「ツール」→「オプション」→「認証」タブから、Bitbucket 絡みの認証情報を削除 → 再度、認証情報を追加(OAuth)すればOKです。
GCMW導入と認証情報のリフレッシュ
ということで、1つ目の解決策の詳細。
まず、先のリンク先から GCMW をインストールしたら、SourceTree の「オプション」→「Git」→「Gitバージョン」→「System」をオンにする。(ボタンが薄くなる。これで、GCMW とセットでインストールされた git が有効になる。)
念のため、SourceTree のコンソールから以下コマンドを叩いて意図したバージョンになったことを確認。
$ git --version
$ git-credential-manager version
これでもリモートリポジトリの認証が通らない場合は、次に、公式サイトの手順(の1部)を実施する。
リンク先が消えたり、英語読みたくない病の人のために、一応、ざっと翻訳・補足しておく。
- 本家ではいきなり Atlassian クラウドのパスワードをリセットしろ、と書いているけど、これは僕の環境では必要なかった。ただし、手順「3」のクレデンシャルはちゃんと削除しておく。
- https://bitbucket.org にログインできることを確認する。
- Windows のコントロールパネルから「ユーザーアカウント」→「資格情報マネージャー」を開く。
→「Windows資格情報」から、Bitbucket クラウド絡みの資格情報(Credential)を根こそぎ削除。 - 次に、SourceTree の「ツール」→「オプション」→「認証」タブから、Bitbucket 絡みの認証情報を削除。
- 最後に、「4」の画面から Bitbucket の認証情報を追加する。
以上。
ちなみに「資格情報マネージャ」ってのはこんな画面。
これで無事、GUI からも PUSH / PULL できるようになりました。
僕はシステム屋ではないので、年に数回しかコードを書かないことも珍しくないわけですが、久しぶりに Python でも触ろうかと SourceTree を開いたらこんなことになっててショック。これ、きっと困ってた人多いだろうなぁ…、と思ったら案の定。断片的な情報があちこちに散らばってて、中には「結局 Bitbucket では認証できませんでした」というケースも…。うーん。
とりあえず、こういう作業が必要になってしまった背景については、「Git Credential Manager for Windows」の README から少しだけ伺い知ることができます。どうやら、けっこう前に GitHub 側が弱い暗号化を無効化したらしく、今回の症状はそれと関係があるようです。
GCMW 自体は Visual Studio Team Services、GitHub、Bitbucket のマルチファクタ認証向けにクレデンシャルを管理するソフトウェアとのことですから、恐らくは Bitbucket 以外でもこういう作業が必要になるケースがあったのでしょう。もっとも、一番情報が少ないのは Bitbucket だったのだろうけども。
そのものズバリの答えを書いてあるサイトもあったのだけど、コンテキストが違う気がするし、困った人がたどり着ける気がしなかったし、困った人が読んでも、多分、その先に進めない予感がしたのでまとめさせていただきました。
~~ここから余談~~
下手に Git 単品を最新化すると相性問題が出る。試しに git 2.19.1 入れてみたら「fatal: ArgumentException encountered.」とかいうどう頑張っても動きそうもないエラーが出るハメに。
なので以下はインストールしないこと。
※ちなみに、SourceTree の「Embedded」版の git は SourceTree からアップできる:→「オプション」→「Git」→「Gitバージョン」→「Update Embedded」。けども今回はこれも使わない。動かないので。
~~余談ここまで~~