CLIからのGit操作時にパスワードで認証ができない件の解消

CLIからのGit操作時にパスワードで認証ができない件の解消

CLI経由でのgit操作時のユーザー認証で詰まったためその対処法です。

発生したエラー


cloneしたリポジトリに対して初回のpushを行おうとした際にユーザ名とパスワードの入力を求められますが、普段通りにGitHubのアカウント情報を入力したところ通らなかった。

$ git push origin master
Username for 'https://github.com': Username
Password for 'https://Username@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/Username/RepositoryName.git/'

出力内容に目を向けるととある一文があり

remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.

「添付したURL見ましょう」と促されているため、ひとまず確認していきます。

git操作にトークンベースの認証が必要に

Beginning August 13th, 2021, we will no longer accept account passwords when aut…
github.blog

エラーに吐かれていたURLに飛ぶとGitHub Blogの「Git操作の認証要件」という記事に辿り着きました。

In July 2020, we announced our intent to require the use of token-based authentication (for example, a personal access, OAuth, or GitHub App installation token) for all authenticated Git operations. Beginning August 13, 2021, we will no longer accept account passwords when authenticating Git operations on GitHub.com.

GitHub Blog “Token authentication requirements for Git operations”

簡単に要約すると

  • 2020年7月にGit操作にトークンベースでの認証を使用することを求める発表が出された
  • 2021年8月13日からGit操作の認証時にアカウントのパスワードを使用することができなくなる

というもの。

影響を受けるワークフローとして挙げられた内容にも「CLIによるGitアクセス」が含まれており、完全に該当していました。

僕はこの変更に気づかず、GitHubアカウントのパスワードによる認証を行おうとしたため、操作が拒否されたということになります。

2要素認証+トークンorSSHベースの認証で回避可能

該当記事には他にも様々なことが書かれており
先に述べた変更の影響を受けないワークフローとして

アカウントで2要素認証が有効 かつ トークンベースまたはSSHベースの認証
との記述がありました。

If you have two-factor authentication enabled for your account, you are already required to use token- or SSH-based authentication.

GitHub Blog “Token authentication requirements for Git operations”

つまり、↑に対応できればCLI経由でのGit操作は問題なく行えるとのこと。

僕自身、普段の業務ではGitLabを使っており、ここ最近はプライベートでの開発も行なっていませんでした。GitHubを使う機会が少なかったたために今更ながら発生したエラーということだったようです。

恥ずかしながら、2要素認証も有効にしていなかった。
エラー解消と共に良い機会だと感じたので対応していきます。

解消方法


以下、自身で確認した解消方法です。

2要素認証の設定

設定方法についてはGitHubの公式ドキュメントでも説明されています。

複数のオプションから選択して、アカウントの 2 番目の認証方法を追� できます。
docs.github.com
  1. Settings > Account security(左サイドバー) を選択
  2. Two-factor authentication項目の下部にあるEnable two-factor authenticationを選択
  3. QRコードが表示されるため、任意のTOTPアプリ(ワンタイムパスワード)で読み込み
    • Google Authenticatorを利用しました
  4. アプリ内に6桁のコードが出力されるためGitHub上に入力しContinueを選択
  5. リカバリーコードが表示されるので下部ボタンからダウンロードしておく

パーソナルアクセストークンの生成

トークン生成についてもGitHubの公式ドキュメントに挙がっています。

コマンド ラインまたは API を使って GitHub に認証する際、パスワードの代わりに personal access token を使用します。
docs.github.com
  1. Settings > Developer settings(左サイドバー)を選択
  2. Personal access tokens(左サイドバー)を選択
  3. Generate new tokenを選択
  4. Note欄に命名
  5. Expirationのセレクトボックスからトークン有効期限を選択
    • 90 daysで設定しました
  6. トークンに付与する権限を設定
    • リポジトリへのアクセスができれば良いためrepoにチェック
  7. Generate tokenを選択
  8. “ghp_”から始まるトークンが表示されるため適宜保管
    • トークンは生成時のみ表示されます

再度、CLI経由でのGit操作

トークン生成後、再度CLI経由でのGit操作を行います。

$ git clone https://github.com/username/repo.git
Username: your_username
Password: your_token

Git操作時に求められる認証情報にて、パスワード項目に先ほど設定したアクセストークンを入力することで無事にCLIからのGit操作が成功しました。