■背景
いつも通りに、git操作を行っていると、突然push時に、下記エラーが出力されました。
clone,pullなどもできない!!?
remote: Password authentication is temporarily disabled as part of a brownout. Please use a personal access token instead.
remote: Please see https://github.blog/2020-07-30-token-authentication-requirements-for-api-and-git-operations/ for more information.
fatal: unable to access 'https://github.com/repository.git/': The requested URL returned error: 403
そのため、調査してみました。
GitHub、2021年8月13日以降パスワードでのGit操作を禁止
(https://news.mynavi.jp/article/20201222-1604003/)
の記事を発見しました。
■原因
これまでローカルでリモート(github)にアクセスするためにはパスワード認証で問題ありませんでした。
しかし、脆弱性防止のために個人アクセストークン認証に変更になるみたいです。(2021年8月13日にパスワード認証廃止)
さらに、詳細を確認すると、
下記の期間は一時的にパスワード認証が停止され、パスワードを使ったGit操作ができなくなる。
エラーが出たのは2021年7月28日18時頃だったので、下記が原因かと思います。
- 2021年6月30日 UTC 7時から10時(日本時間 同16時から19時)
- 2021年6月30日 UTC 16時から19時(日本時間 7月1日1時から4時)
- 2021年7月28日 UTC 7時から10時(日本時間 同16時から19時)
- 2021年7月28日 UTC 16時から19時(日本時間 7月19日1時から4時)
■パスワード認証からトークン認証に変更
2021年8月13日以降パスワードでのGit操作を禁止になるため、早々にトークン認証に切り替えたので、方法を記載します。
1. キーチェーンアクセスを開き、gitを検索し、インターネットパスワードを削除します。
2.トークンの生成を行う。
githubにログインし、setting→Developer Setting→Personal access tokens→Generate New Token
をクリックし、Note(タイトル)、Expiration、repoにチェックを入れてトークンを生成します。
※トークンが表示されるので、保管しておきましょう。
3. トークン認証を設定する
下記、でトークンを設定しましょう。
■パターン1
git remote set-url origin https://{トークン名}@github.com/{リポジトリ名}.git
リポジトリ名などを間違えてしまうと、下記のようにエラーが出力されます。
remote: Not Found
fatal: repository 'https://github.com/リポジトリ名.git/' not found
トークン認証を設定後、下記、コマンドでリモートのリポジトリと一致しているか確認してみましょう。
git remote -v
■パターン2
上記は、直接トークンを設定しています。毎回パスワードを求められずに操作できるので便利ですが、セキュリティ的に問題がある場合があります。
なので、
トークンを設定せずに、毎回入力を求められるように設定します。
vim .git/config
まず、gitの設定ファイルをvimモードで開きます。
そして、下記の urlをユーザー名のみに設定します。
[remote "origin"]
url = https://ユーザー名@github.com/リポジトリ名.git
fetch = +refs/heads/*:refs/remotes/origin/*
すると、
リモート操作時は、パスワードが求められるので、トークンを入力しましょう。
■最後に
既に、パスワード認証中にgit cloneしてきたものは、上記の手順でgit操作が可能になりますが、
トークン認証後にgit cloneしてきたものは、上記の設定は不要になります。
以上、最後まで閲覧頂きありがとうございます。