プログラミング

【GitHub】authentication failedの解決方法【2段階認証】

【GitHub】authentication failedの解決方法【2段階認証】

GitHubからソースコードをgit cloneしようとしたところ、突如現れたエラー。

 

 command
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/donachiki1017/StopTheRot.git/

 

gitの設定(config)なんて変えた記憶はないんだけど、なぜだ?

 

という現象の原因と解決策です。

 

原因

GitHubへアクセスするためには認証する必要がありますが、2021/8/13以降にポリシーが変わり、従来のパスワード認証によるHTTPSアクセスができなくなりました。

 

Token authentication requirements for Git operations

 

 

以降、GitHubへアクセスするためには以下のいずれかの方法が必須になりました。

  • 2 要素認証を使用したユーザ名とパスワード
  • 個人アクセストークン
  • SSH キー

[GitHub への認証方法について - GitHub Docs]

 

今回は個人用の開発用途で、GitHubに対してリポジトリ操作ができればOKなので、個人アクセストークン(PAT: Private Access Token)を用いる方法で解決しました。

 

解決方法【図解】

公式の手順に従って個人アクセストークン(PAT: Private Access Token)を作り、パスワードの代わりに作成したトークンを指定すればOKです。

[個人アクセストークンを使用する - GitHub Docs]

 

Private Access Tokenを作ってgit操作する手順

  1. GitHubでPrivate Access Tokenを作る
  2. git clone等の操作時に、PasswordにPrivate Access Tokenを指定する

 

環境

  • macOS Big Sur バージョン 11.5.2
  • git version 2.30.1

図はMacのものを使っていますが、Windows(Git for Windows)でも同じです。

 

GitHubでPrivate Access Tokenを作る

1. GitHubへアクセスします。

 

2. 右上のProfile > Settingsをクリックします。

 

GitHub - Private Access Tokenを作る手順

 

3. Developer Settingsを選択

 

GitHub - Private Access Tokenを作る手順

 

4. Personal access tokensを選択

 

 

GitHub - Private Access Tokenを作る手順

 

5. Generate new tokenを選択

 

GitHub - Private Access Tokenを作る手順

 

トークン生成画面では以下を設定します。

Note何に対するトークンかわかるような識別子。トークンによってアクセス権限や設定できることを変えることができるので、後から見てわかるように。特に事情がなければmy access tokenとかでも。
Expirationトークンの有効期限。
Select scopesトークンを使ってできる権限の範囲。リポジトリにアクセスする用途であればrepoにチェックを入れればOK。

 

GitHub - Private Access Tokenを作る手順

 

6. Generate tokenをクリック

 

GitHub - Private Access Tokenを作る手順

 

すると、Personal access tokens画面に、何やら暗号が表示されます。これがPrivate Access Tokenです。

これを忘れずにコピーします。

※再表示はできないため、コピーを忘れてブラウザを閉じてしまうと再度生成することになるので注意

 

Gitのパスワードにトークンを設定する

ターミナルで再度git操作をします。

例えばgit cloneをすると、UsernameとPasswordを聞かれるようになるはずです。

ここのパスワードで先ほど生成したPrivate Access Tokenを指定します。

 

 command
git clone https://xxxxx@github.com
Username for 'https://github.com': GitHubアカウントのユーザ名
Password for 'https://xxxxx@github.com':  先ほど生成したトークンを入力

 

めでたしめでたし。

 

-プログラミング
-

© 2022 ドナブログ Powered by AFFINGER5