かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

GitHub コマンドラインでパスワード認証がエラーになった

ある組織のリポジトリで開発環境を作っていて 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 を私用する」とおぼえておけば良さそうです。


[参考]

春が来ますな