概要
dev containerで開発をしている最中に、https経由でのgitlab上のリモートリポジトリに接続できなくなった。間違った認証を持っていたっぽいのだが、解決に結構はまったため、備忘録。
環境:Ubuntu20.04
発生した問題
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.
原因
dev container内の環境で参照しているアクセストークンが何かしらの手違いで、別のトークンを使用していたことから、エラーが発生していた模様。
解決策
認証を以下のコマンドを用いてリセットすることで解決することができた。
git config --global credential.helper ''
export GIT_ASKPASS=
注意点
上記コマンドを実行すると認証周りがリセットされるので、今までPush時に自動で認証を通してアクセスできていたのが、毎回ユーザ名とパスワード(アクセストークン)を入力しないとPushやPullができなくなる。LSFなどもあると何回も入力しないといけなくなるので、非常にストレスフルである。そこで以下を入力することで、認証の内容をキャッシュしたりファイルに格納したりでき、自動で認証される以前の状態に戻すことができる。
git config --global credential.helper cache
or
git config --global credential.helper store
前者は、一時的なキャッシュとして情報を持つため時間がたつと再度入力が必要。
後者は、ファイル情報としてストアされるので、永続的?なもよう。
セキュリティ的には前者のほうがよさそうだが、後者のほうが楽といえば楽。
どちらにせよこれで元のdev containerの状態に戻すことができたのでコーディングに集中できる。