ある組織のリポジトリで開発環境を作っていて submodule が設定されていたので初期化しようとしたら GitHub のパスワードを聞かれてエラーになったのでメモ
$ git submodule update --init Submodule 'tools/common' (https://github.com/ORG_NAME/REPO) registered for path 'path/to/submodules' Cloning into '/Users/<USERNAME>/local/repo'... Username for 'https://github.com': kikiki-kiki Password for 'https://kikiki-kiki@github.com': PASSWORD remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/ORG_NAME/REPO/' fatal: clone of 'https://github.com/ORG_NAME/REPO' into submodule path '/Users/<USERNAME>/Documents/local/repo/path/to/submodules' failed Failed to clone 'tools/common' a second time, aborting
https アクセス時のパスワード認証が廃止され、個人アクセストークン(PAT)を使う必要があった
Beginning August 13, 2021, we will no longer accept account passwords when authenticating Git operations on GitHub.com.
Workflows affected
- Command line Git access
- Desktop applications using Git (GitHub Desktop is unaffected)
- Any apps/services that access Git repositories on GitHub.com directly using your password
cf. Token authentication requirements for Git operations | The GitHub Blog
個人アクセストークンを使用する - GitHub Docs を参考に Settings > Developer settings > Personal access tokens
にアクセスしてアクセストークンを作成し、生成された token を保存しておく。(リポジトリへの read 権限の token を作成しました)
先程のコマンドでパスワードを聞かれた箇所に生成した token を入力すればOK
$ git submodule update --init // ... Username for 'https://github.com': kikiki-kiki Password for 'https://kikiki-kiki@github.com': token Submodule path 'path/to/submodules': checked out 'hash'
₍ ᐢ. ̫ .ᐢ ₎ OK
2段階認証をしていても組織だったり submodule だったりすると token を聞かれる場面がある?
今回のパスワード認証廃止に関してですが二段階認証をしている場合は影響を受けないとあったのですが、特定の組織のリポジトリだったからか、Submodule が https で指定されていたためかコマンドライン上でパスワードが聞かれあれ?となってしまいました。
「コマンドラインで GitHub にパスワードを聞かれる場合は Personal Access Token を私用する」とおぼえておけば良さそうです。
[参考]
春が来ますな