GitLab/GitHubでgit cloneしたら「HTTP Basic: Access denied」のエラーが出た
/ 4 min read
Updated:Table of Contents
はじめに
GitLabで2段階認証を設定した後に、git cloneしたところ、以下のエラーが出るようになります。
今回はその解決方法についてまとめます。
※GitHubでも同様のエラーが出ることがありますが、解決方法は同じです。
remote: HTTP Basic: Access denied. If a password was provided for Git authentication, the password was incorrect or you're required to use a token instead of a password. If a token was provided, it was either incorrect, expired, or improperly scoped. See https://gitlab.com/help/topics/git/troubleshooting_git.md#error-on-git-fetch-http-basic-access-deniedfatal: Authentication failed for 'https://gitlab.com/username/repository.git/'解決策
パスワードの代わりにアクセストークンを設定してアクセスすることが必要です。
1. パーソナルアクセストークンの取得
ユーザー設定 > Access tokens から新しいPersonal access tokenを作成する
- トークン名: 適当に設定
- 有効期限: 適当に設定。空欄の場合は、1年になる。
- スコープ:
read_repository,write_repositoryあたりにチェック
スコープはここで過不足なく付けておきます。GitHubのFine-grained PATの場合、権限が足りないと今度はpushのときに別のエラーで弾かれます。そのときの対処はPersonal Access Tokenでworkflowファイルがpushできないときの対処にまとめています。
2. パーソナルアクセストークンの設定
credential.helperを使用する。
# `末尾をstore`とした場合、認証情報をディスク上に平文で保存する。# 一方、`cache`とすれば、メモリ上に一時的に保存する。$ git config --global credential.helper storegit pushする。
# 最初のプッシュ時に認証情報を要求されるため、ユーザー名とパスワード/トークンを入力する。# 認証情報が保存され、次回からは自動的に使用されます。$ git push origin main# -> Username: ユーザー名# -> Password: トークン
# ~/.git-credentials には以下のような形式で保存# https://ユーザー名:トークン@gitlab.comおまけ
リモートURLにトークンを含めることも可能。
ただし、リモートURLにトークンを含めると、そのURLが.git/configに保存されるため注意。
# 既存のリモートURLを削除git remote remove origin
# パーソナルアクセストークンを含む新しいURLを追加git remote add origin https://oauth2:トークン@gitlab.com/ユーザー名/リポジトリ名.gitHTTPS以外の選択肢
トークンには有効期限があるため、切れるたびに再発行と再設定が必要になります。SSH鍵で認証するようにしておけば、この手間はなくなります。手順はGitHubにPushしたらPermission deniedになったに書きました。
認証以外でGitに詰まったときはGitのトラブル対処まとめもどうぞ。cloneしたあとのGitLabでの作業はGitLabでコミットをまとめるにまとめています。
