2022年3月時点で、BitbucketとSourcetreeの連携(pull、push、fetch等)ができなくなる事象が起きたので、共有します。
起きたエラー
まず起きたエラーですが、いつも通りにPushをしようとすると以下のようなエラーログが出ました。
Pushing to https://bitbucket.org/XXX/repo-name.git remote: Bitbucket Cloud recently stopped supporting account passwords for Git authentication. remote: See our community post for more details: https://atlassian.community/t5/x/x/ba-p/1948231 remote: App passwords are recommended for most use cases and can be created in your Personal settings: remote: https://bitbucket.org/account/settings/app-passwords/ fatal: Authentication failed for 'https://bitbucket.org/XXX/repo-name.git/' (上の何回か繰り返し) Completed with errors, see above
原因と対応方法
原因
結論から書くと、原因はBitbucketのアプデによる認証方式の仕様変更でした。
具体的な認証方式の変更内容と、どうしてこの変更をしたのかはこちらに書いてあります。
Announcement: Bitbucket Cloud account password usa... - Atlassian Community
内容の簡単な翻訳と要約は後程書きます。
対応方法(Mac)
①【Bitbucket】Bitbucketにログインし、Personal Settingsからアプリパスワードを発行する。
②【Sourcetree】認証をBasicにして、アプリパスワードで認証をする。
- SourceTree > 環境設定でアカウントの編集
- 認証はBasicを選択
- ユーザー名をBitbucketのユーザー名を入力
- パスワードに①で発行したアプリパスワードを入力
③【Sourcetree】 gitのURLを確認・変更する
- 右上「設定>リモート」からリモートリポジトリのパスを確認する
- URL内の@以前がメアドの場合は、ユーザー名に変更する。
例)https://[bitbucketのアカウント名]@bitbucket.org/mice/mice-web-repository.git
自分はこれでいつも通り連携できるようになりました。
今回の原因についてもう少し詳しく
上記のコミュニティサイトの大雑把な翻訳と要約になります。
間違い等ございましたら、何なりとご指摘ください。筆者は飛んで喜びます。
以下がまとめになります。
【要約】
HTTPS経由、もしくはBitbucket Cloud REST API経由の、Git認証をアカウントパスワードからアプリパスワードによって認証をする様に変更した。
- 元々SSH接続で認証してる人に影響はない
- SourceTree for Windowsで利用している人にはちょっとした"issue"があるのでcommunity post見ておくれ。
- アプリパスワードの認証ではメアドを認証の際にユーザーネームとして使わなくなりました。なのでURLにメアドではなくユーザーネームを書く様にしてくださいね。
(OAuthについてはあまり詳しくないのでほぼコピペ)
- OAuth 2.0 Resource Owner Password Credentials Grant (4.3) flowは利用できなくなりました。OAuth 2.0 (RFC-6749) grant flowsとcustom Bitbucket flow for exchanging JWT tokens for access tokensは使えます。OAuthに関する仕様変更はこちら
https://developer.atlassian.com/cloud/bitbucket/oauth-2/
- 今回の仕様変更はアプリパスワードによってより詳細に権限を管理することで、インフラ周りのセキュリティを向上させる目的。
最後に
簡単ではありますが、この記事が誰かのお役に立てれば幸いです。
また、まだまだ新米エンジニア故、内容に誤りがあるかもしれません。その場合はご指摘いただけますと嬉しいです。