最近使い始めたMacBookでGitHubを使ったpushができないという事象に遭遇。

pushをするためにgit pushコマンドを打つと、パスワード入力が求められる。馬鹿正直にGitHubアカウントのパスワードを入力してみると、エラーが。。
今回は「なぜエラーが出たのか?」「どう対応したのか?」について備忘録としてまとめていきたいと思います。
git pushコマンドで認証エラーが発生
パスワードが求められたタイミングで、GitHubアカウントで使っているパスワードを試しに入力してみました。
すると、ターミナル上で以下のようなメッセージが返ってきました。
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/(ユーザー名)/(レポジトリ名)/'
メッセージ内容について、ChatGPTに日本語での解説をお願いすると、以下のような返事が来ました。

このエラーメッセージは、GitHubが2021年8月13日にパスワード認証のサポートを終了したため、git pushコマンドで認証エラーが発生していることを示しています。

ええ、パスワード認証のサポートを終了したのに、パスワード入力が求められたの?

git pushコマンドで認証エラーが発生、、、
認証エラーを解決させねばならぬということか。
解決方法について

この問題を解決するためには、代替の認証方法を使用する必要があります。例えば、パーソナルアクセストークンやSSHキーを使用することができます。

「パーソナルアクセストークンを使った方法」と「SSHキーを使った方法」の2つがあるんですね。
- パーソナルアクセストークンを使った方法
- SSHキーを使った方法
解決方法は2つありますが、パーソナルアクセストークンを使った解決方法の方が簡単だったので、以下、「パーソナルアクセストークンを使った方法」についてのみ解説いたします。
パーソナルアクセストークンの使用手順
以下、ChatGPTが示してくれた「パーソナルアクセストークンの使用手順」です。
- GitHubのアカウント設定にアクセスし、「開発者設定」→「パーソナルアクセストークン」を選択します。
- 必要な権限を持つ新しいトークンを生成します。
- トークンをコピーします。
- 認証時にパスワードを求められた場合は、トークンをパスワードとして貼り付けます。

適切な認証方法を設定した後、再度レポジトリをクローンしてみてください。これにより、認証エラーが解決されるはずです。

説明ありがと〜
簡単にできそう
GitHubでパーソナルアクセストークンの発行
手順通りに作業を進めれば簡単に出来ることが分かったので、スクショ付きで解説していきます。
githubでログインをして、自分のアイコンマークをクリック。

Settingsをクリック。

Settingsページを開いた後、

画面の下の方に行くと、「Developer settings」という項目があるので、そこをクリック。

Developer settingsページを開き、「Personal access tokens」を選択。

「Fine-grained tokens」のBeta版も用意されていたが、今回は「Tokens(classic)」を選びました。

「Generate new token」で新しいトークンを生成してもらいます。

次の画面で以下の設定を行っていきます。


Select scopesでどれを選べば良いか分からない方はとりあえず「repo」にチェックを付けておきましょう。
https://style.potepan.com/articles/34189.html
これでローカルにクローンするなどのリポジトリ操作が可能となります。
設定後、「Generate token」をクリックすると、パーソナルアクセストークン(PAT)の発行が完了します。
画面にAccess token文字列が表示されますので、コピーしておきましょう。
※コピーせずに画面を閉じたり切り替えてしまうと、再発行する羽目に遭います。
再度pushしてみた
少し面倒臭いですが、ローカルにあった該当するディレクトリを丸々削除し、再度クローン。クローンしたものを編集し、再度pushすると、パスワードが求められます。
そこで、先ほどコピーした文字列をペースト。すると、無事push完了させることができるはずです。
以上、「GitHubを使ってpushすると、パスワードが求められた話」でした。
今回は「Tokens(classic)」を選びましたが、今後「Fine-grained tokens」を使う機会があったらまた記事にして投稿したいと思います。