git pushで403エラーが返ってきた際の対処法

git pushで403エラーが返ってきた際の対処法

ローカルのリポジトリに変更を加え、
git add, git commitを済ませ、最後にリモートリポジトリにpushしてみると、

remote: Permission to user/kokoro-hart.git denied to hogehoge.
fatal: unable to access 'https://github.com/user/kokoro-hart/':
The requested URL returned error: 403

https://github.com/user/kokoro-hart/にアクセスすることができません。 と
リクエストが403エラーとなってしまいました。

エラーの原因

結論、原因は

①直前にGitHubアカウントから直接リポジトリをいじってしまった。
②Mac OS X のキーチェーンアクセスが弊害となっていた。
以上の2点が原因でした。

Mac OS以外のOSで、git pushを行う際には以下のようにユーザ名とパスワードの入力が求められます。

$ git push origin main
Username for 'https://github.com': <username>
Password for 'https://kokoro-hart@github.com': <password>

しかし、Mac OSに備え付けられたgitの場合、パスワードを記憶してくれるキーチェーンアクセスというアプリケーションが自動でパスワードを入力してくれるため、pushの際にパスワードの入力を省くことができます。(強制的にパスワードの入力がスキップされまてしまいます。)

この機能が複数のgitアカウントのリポジトリを管理する際に弊害になってしまっていました。

エラーの対処法

①Macのキーチェーンアクセスからgitアカウントのパスワード情報を削除する。

Mac OSのアプリケーション一覧からキーチェーンアクセスを開いて

Mac OSのアプリケーション一覧からキーチェーンアクセスを開く

検索窓からgitで検索しgithub.comのパスワードを削除します。

検索窓からgitで検索しgithub.comのパスワードを削除します。

そして、もう一度pushしてみます

$ git push origin main

すると、今度は403のhttpリクエストエラーではなく、
ユーザ名とパスワードの入力が求められました。

$ git push origin main
Username for 'https://github.com': <username>
Password for 'https://kokro-hart@github.com': <password>

ユーザ名とパスワードを入力すると無事pushすることができました。

②キーチェーンアクセスを使用しないようにする方法もある

キーチェーンアクセスのgithubからgit-credential-osxkeychainを消去します。

キーチェーンアクセスのgithubからgit-credential-osxkeychainを消去します。

pushするとキーチェーン内のパスワードを使用しますか?と聞かれるようになるので、
拒否してしまえばキーチェーン内のパスワードは使用されず、
コンソール内でパスワード入力を求められるようになります。