GitHubから 「[GitHub] Your personal access token (classic) is about to expire」 というメールが届きました。

パスワード代わりに使用している個人アクセストークン(PAT)の有効期限が迫っているという通知ですが、これを見逃したままGCE(Google Compute Engine)上でGit操作を行ったところ、認証エラーが発生してしまいました。

今回は、古いトークンの削除から新しいトークンの再設定までの手順を備忘録として残します。

スポンサーリンク

発生したエラー

GCE上のプロジェクトディレクトリで git pull を実行したところ、以下のエラーが出力されました。

$ git pull
remote: Invalid username or token. Password authentication is not supported for Git operations.
fatal: Authentication failed for 'https://github.com/YourUsername/YourRepository.git/'

原因は明白で、GCE上にキャッシュされていたGitの認証情報(有効期限切れのPAT)を使ってアクセスしようとしたため、GitHub側から弾かれてしまった状態です。

解決手順

古い認証情報をクリアし、新しく発行したトークンを記憶させ直します。

1. GitHubで新しいアクセストークンを発行する

まずはGitHubのWeb画面で新しいトークンを取得します。

  1. GitHub右上のプロフィールアイコンから [Settings] を開く
  2. 左側メニューの一番下にある [Developer settings] を選択
  3. [Personal access tokens] > [Tokens (classic)] を開く
  4. 「Generate new token」から新しいトークンを発行(または期限切れのトークンをRegenerate)
  5. 表示された ghp_ から始まる新しいトークンをコピーして手元に控えておく

2. GCE上の古い認証情報を削除する

GCE(Linux環境)にSSHログインし、キャッシュされている古いトークンを削除します。通常、認証情報は ~/.git-credentials に保存されています。

# 古い認証情報ファイルを削除
$ rm ~/.git-credentials

※もし No such file or directory と言われた場合は、ファイルが存在しない(または別の方法で管理されている)だけなので、そのまま次の手順に進みます。

3. Gitの資格情報保存を有効にする(念のため)

次回以降、毎回パスワード(トークン)を入力しなくて済むように、credential helper の設定をしておきます。

$ git config --global credential.helper store

4. Gitコマンドを実行し、新しいトークンを入力する

再度、対象のリポジトリ内でGitコマンドを実行します。

$ git pull

すると、先ほどとは異なりUsernameとPasswordの入力を求められます。

※ターミナル上ではパスワードをペーストしても文字は表示されませんが、正しく入力されているのでそのままEnterを押してください。

スポンサーリンク

まとめ

これで新しいトークンが ~/.git-credentials に保存され、以降はエラーなく git pullgit push ができるようになります。

個人アクセストークンはセキュリティ上、定期的に有効期限が切れるように運用するのが一般的です。「Invalid username or token」が出たら、まずはPATの有効期限を疑い、サクッと再設定してしまいましょう。


この記事が気に入ったら『目黒で働く分析担当の作業メモ』ご支援をお願いします!

※OFUSEに飛びます


おすすめの記事