サーバレスアーキテクチャ

Gitlabで2段階認証を設定後にレポジトリにアクセスできなくなった時の対応

Gitlabで2段階認証を設定後にレポジトリにアクセスできなくなった時の対応をまとめました。2段階認証を入れるとプライベートレポジトリにこれまで通りにログインができなくなります。

Gitlabで2段階認証を設定すると、プライベートレポジトリへのアクセス制限がかかる

Gitlabのプライベート・レポジトリをHTTP経由で操作しようとすると、2段階認証前にあったログインプロンプトが表示されず、not foundが返ってきてしまいます。

git pull origin master
remote: The project you were looking for could not be found.
fatal: repository 'https://gitlab.com/ユーザー名/レポジトリ.git/' not found

これは、レポジトリパスにbasic認証を入れても同じです。

git push origin master
remote: HTTP Basic: Access denied
remote: You must use a personal access token with 'read_repository' or 'write_repository' scope for Git over HTTP.
remote: You can generate one at https://gitlab.com/profile/personal_access_tokens
fatal: Authentication failed for 'https://gitlab.com/ユーザー名/レポジトリ.git/'

冷静になって考えれば、これまで通りにログイン・パスワードでレポジトリを操作できたら「1段階認証」な訳で、この挙動は当たり前ということですね。

2段階認証を設定時のレポジトリの操作には「access token」が必要

先ほどの、basic認証URLを使った時のエラーログにも書いてありますが、 Gitlabで2段階認証を設定している場合は、レポジトリへのアクセスに「access token」が必要になります。

access tokenは、設定が画面から発行ができます。

Personal Access Tokens

付与する権限は、

  • read_repository
  • write_repository

の二つがあれば、最低限レポジトリへの読み書きができます。

リモートレポジトリを登録する際の設定方法

access tokenを発行したら、レポジトリのリモート設定を変更します。

access tokenを使う際のリモートURLは、

https://oauth2:発行したトークン@gitlab.com/ユーザー名/レポジトリ.git

となるので、コマンドラインから

git remote set-url origin https://oauth2:発行したトークン@gitlab.com/ユーザー名/レポジトリ.git

すればOKです。git submoduleについても同様です。

access tokenはアカウント全体に適用されるので、レポジトリごとにtokenを発行しないで共通のもので使いまわすことができます。


Gitlabで2段階認証を設定後にレポジトリにアクセスできなくなった時の対応を見てきました。

セキュリティを考えれば2段階認証は必須にする方が良いので、この機会にぜひ設定して大事なデータをしっかりと保護してみてください。


価格は記載がある場合を除き、すべて税抜きです。

この記事の関連キーワード

サーバレスアーキテクチャの記事