Macを使っていてGitのリポジトリへpushしようとしたら認証エラーが発生しました。
その対処方法のメモです。
remote: HTTP Basic: Access denied remote: You have 2FA enabled, please use a personal access token for Git over HTTP. fatal: Authentication failed for 'https://example.com/repo/sample.git/'
パスワードも合っているのに何故…?と思っていたけど、Mac OSX キーチェーンに保存されている認証情報が変な状態になっていることが原因でした。
Gitの設定情報を確認すると、デフォルトで credential.helper
が登録されていました。
$ git config --list credential.helper=osxkeychain ...
GitHubのドキュメントを見ると、以下の条件があるとのこと。確かに当てはまる。
- osxkeychain 認証情報ヘルパーを利用するには、Git 1.7.10 以降が必要です。
- Homebrew を使って Git をインストールした場合、osxkeychain helper はインストール済みです。
- Mac OS X 10.7 以降を実行しており、Apple の Xcode コマンドラインツールで Git をインストールした場合、osxkeychain helper は インストールした Git に含まれています。
Git に GitHub の認証情報をキャッシュする - GitHub Docs
私は特定のリポジトリでこのcredential.helper
を上書きしており、そこの設定が osxkeychain
に保存されていることで問題が発生していたようでした。
$ git config --list ... credential.usehttppath=true credential.helper=!aws codecommit credential-helper $@ ...
解決方法
解決方法としては、キーチェーンに保存されている情報を削除すれば認証情報が更新されてアクセス可能になりました。
参考 : OSX キーチェーンから認証情報を更新する - GitHub Docs
コマンドラインで削除する方法もありますが、今回はGUIの操作を紹介します。(どちらの方法も上記のGitHubドキュメント見ればわかります。)
まずはキーチェーンアクセスを開きます。Spotlight検索からすぐに開きます。
右上の検索ボックスで git
と検索すると対象のデータが表示されます。
右クリックして「情報を見る」を選択します。
「アクセス制御」をクリックし、対象の git-credential-osxkeychain
を選択したら下の「ー」をクリックすれば削除が完了します。
これで再びGitリポジトリへアクセスしたら事象が解決しました。👏