swchrm logs

妄想技術録

GitHubのログインパスワード変更による、Gitからのリモートリポジトリへプッシュできなくなる事象の対処法 〜osxkeychain版〜

個人的な覚書です

環境

事象

いつもどおりローカルでGitのステージング、コミット、プッシュを行った。そうしたらプッシュ時にエラーがでた。ターミナル出力は下記の通り。リポジトリ名等は一部hogeなどとボカしてます。

MyMacBookAir:hoge-project swchrm$ git push -u origin master
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/hoge/hoge-project.git/'

原因

GitHubのパスワードを変更したことで、ローカルに保存してあるGitHubアカウントのパスワードと実際のパスワードが食い違ってしまっているため。

対処法

osxkeychainで保存されている認証情報内のパスワード欄を更新します。

MacOS標準搭載のキーチェーンアクセスアプリで、GitHubの項目からパスワードを変更します。変更後にプッシュ成功すればOK。自分は変更後一回目のプッシュでusernameとパスワードを聞かれたけど、2回目以降は聞かれなかった。

osxkeychainの情報が反映されているのか確認したかったらgit credential fillコマンドで確認すると確実。

補足

自分の認証情報を閲覧する

git credential fillコマンドの詳細は下部の参考文献の1件目にある。コマンドを実行するとプロトコルとホスト名を入力。一行空白をおき実行。そのあと、ユーザー名とパスワードを聞かれるので、入力すると以下の情報が得られる。

MyMacBookAir:.git swchrm$ git credential fill
protocol=https
host=github.com

Username for 'https://github.com':hoge
Password for 'https://hoge@github.com': 
protocol=https
host=github.com
username=hoge
password=hogehoge

自分が利用できるhelperを確認する

git help -a | grep credentialで確認可能。 確認結果は以下。

MyMacBookAir:.git hoge$ git help -a | grep credential
  credential                remote-ext
  credential-cache          remote-fd
  credential-cache--daemon  remote-ftp
  credential-osxkeychain    remote-ftps
  credential-store          remote-http

複数helper利用時

認証情報の保存は複数のhelperで行われる様子。複数のhelperを利用している場合はどのhelperに保存されている情報が優先で適用されるのかを確認する必要がありそう。今回は自分がキーチェーンアクセスのみなのでここでの紹介はありません。

所感

git credential fillで自分の認証情報を閲覧できるけども、これがどの方式で保存されているか分からない。Gitの認証情報保存方法はいくつかあるということで、自分の保存方法が何かを確認するのに少し手間取ってしまった。

参考にした文献

git-scm.com

gist.github.com