misc.log

日常茶飯事とお仕事と

GitLabからクローンしようとして認証失敗する場合の対応例

開発作業で使っているGitLabのリポジトリーから、そのプロジェクトでは使ってなかったPCへクローンでソースを持ってこようとしたのですが……

現象

コマンドラインからクローンしようとすると

git clone https://gitlab.com/XXXXX-products/YYYYY/ZZZZZZZZ.git
Cloning into 'XXXXX'...
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://gitlab.com/XXXXX-products/YYYYY/ZZZZZZZZ.git/'

みたいなエラーで蹴られました。ちなみにコマンドプロンプトからコマンドでの実行。また、同じことをVisual Studio 2017から実行しようとした場合も

Remote: HTTP Basic: Access denied
リモート リポジトリの複製を作成中にエラーが発生しました: Git failed with a fatal error.
Authentication failed for 'https://gitlab.com/XXXXX-products/YYYYY/ZZZZZZZZ.git/'

というエラーがでて失敗。ちなみに、仕事用とは別のプライベート用アカウントでGitLabは利用していて、そのPCからはそちらのリポジトリで自宅でも使う個人的な資料(休暇の取得記録やら、勤務時間やらの情報、お試しで作ったサンプルソースなどの情報)をやりとりしていたので、そもそもGitが動かないPCではありません。

解決策

Windows自体が保持している認証情報がプライベートなアカウントの情報を自動入力しようとして失敗していたようです。Windowsキーを押してから、そのまま「認証マネージャー」と打ち込むと出てくる候補から認証マネージャーを開き、Windowsが保持しているGitLabのアカウント情報を削除。保持されていたのはプライベート用のアカウントだけで、仕事用アカウントは保持されていませんでした。なので「GitLabのアカウント……これね!?」とWindowsが勝手にプライベートのアカウントを入力してエラーになっていたのではないかと推測。

その後、改めてCloneを実行してみると、認証情報を問い合わせるダイアログが表示されて無事接続できました。

ネットの情報

ちなみにこの方法はstackoverflowでも出ていたのですが、認証マネージャーが英語版Windowsでは「Credential Manager」となっていて、Credentialと打ち込んでも候補が出てこないというところで引っかかって諦めていました。情けない。

stackoverflow.com

質問に対する回答のうち、mproさんが答えている内容です。

これですが、おそらくBharti Ladumorさんが答えている「git config --system --unset credential.helper」というコマンドで対応するのも同じことなのでは無いかと思います。自分のところではこの方法はうまく働きませんでしたが、多分認証時に認証情報入力を支援する機能を使うか、使わないかの設定なのではないかと……。

というわけで参考まで。