dev containerで開発をしている最中に、https経由でのgitlab上のリモートリポジトリに接続できなくなった。間違った認証を持っていたっぽいのだが、解決に結構はまったため、備忘録。
環境
- ubuntu20.04 (devcontainer上)
問題
devcontainer上で開発している際、httpsでpullやpushをすると以下のようなメッセージが出て、gitlabのリモートリポジトリにアクセスできなくなった。ただしdevcontainerを抜けて、ただのdockerの環境とかでやると何ら問題なくできているので、devcontainerにおける設定の問題と推定。
HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal
access token instead of a password.
エラーメッセージの意味
上記エラーメッセージが出るのは、以下の場合とのこと。
docker環境でできていることを考慮すると、どちらも違う気がする。。。
- 2ファクタ認証未実施(アクセストークンをそもそも発行していない)
- アクセストークンが間違っている
解決策
下記を実行し認証周りをリセット後、再認証を行い、devcontainerをリビルドすることで解決。
おそらくだが、間違った認証情報や参照先を環境変数で持っていたっぽいので、
そこを再設定してあげればよかった模様。
git config --global credential.helper ''
export GIT_ASKPASS=
23/11/21追記:認証の再設定
上記コマンドを実行すると認証周りがリセットされるので、今までPush時に自動で認証を通してアクセスできていたのが、毎回ユーザ名とパスワード(アクセストークン)を入力しないとPushやPullができなくなる。LSFなどもあると何回も入力しないといけなくなるので、非常にストレスフルである。そこで以下を入力することで、認証の内容をキャッシュしたりファイルに格納したりでき、自動で認証される以前の状態に戻すことができる。
git config --global credential.helper cache
or
git config --global credential.helper store
前者は、一時的なキャッシュとして情報を持つため時間がたつと再度入力が必要。
後者は、ファイル情報としてストアされるので、永続的?なもよう。
セキュリティ的には前者のほうがよさそうだが、後者のほうが楽といえば楽。
どちらにせよこれで元のdev containerの状態に戻すことができたのでコーディングに集中できる。