そこに仁義はあるのか(仮)

略してそこ仁!

Gitの認証がうまくいかなくなった時の対処法

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検索からすぐに開きます。
f:id:syobochim:20200909192334p:plain:w500

右上の検索ボックスで git と検索すると対象のデータが表示されます。
f:id:syobochim:20200909192721p:plain

右クリックして「情報を見る」を選択します。
f:id:syobochim:20200909192853p:plain:w500

「アクセス制御」をクリックし、対象の git-credential-osxkeychain を選択したら下の「ー」をクリックすれば削除が完了します。
f:id:syobochim:20200909193015p:plain:w500

これで再びGitリポジトリへアクセスしたら事象が解決しました。👏