下記エラーが表示されクローンやプッシュ等ができない場合の備忘録
remote: Invalid username or token. Password authentication is not supported for Git operations.
fatal: Authentication failed for 'https://github.com/USERNAME/REPOSITORY.git/'
→2021年8月13日以降、GitHubはパスワード認証を廃止した。そのため、以下の認証方法のいずれかを使用する必要がある。
Personal Access Token(PAT)
SSHキー
OAuth
▼解決手順
事前準備:古い認証情報をクリア
- Git設定から認証ヘルパーを削除
git config --global --unset credential.helper
- macOSキーチェーンから古い認証情報を削除
security delete-internet-password -s github.com
[ターミナル上、下記のような状態となる]
% git config --global --unset credential.helper
% security delete-internet-password -s github.com
keychain: "/Users/hoge/Library/Keychains/login.keychain-db"
version: 512
class: "inet"
attributes:
~以下一部省略~
password has been deleted.
保存されていた古いパスワード情報が削除される。
■本対策:Personal Access Tokenの設定
1、GitHubにログイン
2、右上のプロフィールアイコン → Settings
3、左メニューの一番下 → Developer settings
4、Personal access tokens → Tokens (classic)
5、Generate new token → Generate new token (classic)
6、設定項目:
・Note: SourceTree用 など分かりやすい名前
・Expiration: 90日または任意の期間
・Scopes: ☑️ repo(リポジトリ全体のアクセス権)にチェック
7、Generate tokenをクリック
8、生成されたトークンをコピー(この画面を離れると二度と表示されない)
※ここで一度下記に貼り付けておくと間違いない
ステップ2:リポジトリのURLにトークンを設定
プロジェクトディレクトリに移動して、以下のコマンドを実行:
プロジェクトフォルダに移動
cd /path/to/your/project
URLにトークンを含めて設定(1行で実行)
git remote set-url origin https://USERNAME:TOKEN@github.com/USERNAME/REPOSITORY.git
※もしここで、ユーザーAが作成したリモートリポジトリ対して、ユーザーBがプッシュ時に遭遇したエラーを解消する場合は、下記の通りとなる。
例:
git remote set-url origin https://USERNAME-B:USERNAME-B-TOKEN@github.com/USERNAMEA/REPOSITORY.git
※上記はユーザーBの名前と、ユーザーBが発行したアクセストークンでユーザーAのリモートリポジトリにアクセスできるようにするための構文
ステップ3:設定の確認
リモートURLの確認
git remote -v
以下のような表示になればOK:
origin https://USERNAME:TOKEN@github.com/USERNAME/REPOSITORY.git (fetch)
origin https://USERNAME:TOKEN@github.com/USERNAME/REPOSITORY.git (push)
ステップ4:プッシュのテスト(この時点でsourcetreeからでもプッシュはできる)
git push origin main
成功すると以下のような表示:
Enumerating objects: xxxxx, done.
Counting objects: 100% (xxxxx/xxxxx), done.
...
To https://github.com/USERNAME/REPOSITORY.git
a8b6f43..4f3c030 main -> main