2要素認証のトラブルシューティング
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
エラー: HTTP Basic: Access denied. If a password was provided for Git authentication ...
リクエストを行うと、次のエラーが返されることがあります:
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.このエラーは、以下の場合に発生します:
- 2FAを有効にしていて、ユーザー名とパスワードで認証を試みた。
- 2FAを有効にしておらず、正しくないユーザー名またはパスワードで認証を試みた。
- 2FAを有効にしておらず、すべてのユーザーに対して2FAを強制する設定が有効になっている。
- 2FAを有効にしておらず、HTTP(S)経由のGitに対してパスワード認証を有効にする設定が有効になっていない。
このエラーを解決するには:
- 正しいスコープを持つパーソナルアクセストークンを使用します:
- HTTP(S)経由のGitリクエストの場合:
read_repositoryまたはwrite_repository - GitLabコンテナレジストリリクエストの場合:
read_registryまたはwrite_registry - 依存プロキシリクエストの場合:
read_registryおよびwrite_registry
- HTTP(S)経由のGitリクエストの場合:
- LDAPを設定している場合は、LDAPパスワードを使用します。
- OAuth認証情報ヘルパーを使用します。
エラー: invalid pin code
invalid pin codeエラーは、認証アプリケーションとGitLabインスタンス自体の間に時刻同期の問題があることを示している可能性があります。
この問題を解決するには、2FAコードを生成するデバイスの時刻同期をオンにします。
- Settings > System > Date & time(設定 > システム > 日付と時刻)に移動します。
- Set time automatically(時刻を自動的に設定)をオンにします。この設定がすでにオンになっている場合は、オフにして数秒待ってから、もう一度オンにします。
- Settings > General > Date & Time(設定 > 一般 > 日付と時刻)に移動します。
- Set Automatically(自動設定)をオンにします。この設定がすでにオンになっている場合は、オフにして数秒待ってから、もう一度オンにします。
エラー: リカバリーコードを生成する際のPermission denied (publickey)
Permission denied (publickey)というエラーが表示されることがあります。
この問題は、デフォルト以外のSSHキーペアファイルのパスを使用しており、SSHを使用してリカバリーコードを生成することを試みた場合に発生します。
これを解決するには、ssh-agentを使用して別のディレクトリを指定するようにSSHを設定します。
リカバリーオプションと2FAリセット
2FAを有効にしていて、コードを生成できない場合は、次のいずれかの方法でアカウントにアクセスしてください:
リカバリーコードを使用する
2FAを有効にしたときに、GitLabにより一連のリカバリーコードが提供されています。これらのコードを使用してアカウントにサインインできます。
リカバリーコードを使用するには:
- GitLabサインインページで、ユーザー名またはメールアドレスとパスワードを入力します。
- 2要素コードの入力を求められたら、リカバリーコードを入力します。
リカバリーコードを使用した後、同じコードを再度使用することはできません。他のリカバリーコードは引き続き有効です。
SSHを使用して新しいリカバリーコードを生成する
GitLabアカウントにSSHキーを追加した場合、SSHで新しいリカバリーコードセットを生成できます:
ターミナルで、次のコマンドを実行します:
ssh git@gitlab.com 2fa_recovery_codesGitLab Self-Managedインスタンスで、
gitlab.comをGitLabサーバーのホスト名(gitlab.example.com)に置き換えます。確認メッセージで、
yesを入力します。GitLabが生成するリカバリーコードを保存します。以前のリカバリーコードは無効になりました。
サインインページで、ユーザー名またはメールアドレスとパスワードを入力します。
2要素コードの入力を求められたら、新しいリカバリーコードの1つを入力します。
サインインしたら、すぐに新しいデバイスで2FAを設定します。
アカウントで2FAをリセットする
- プラン: Premium、Ultimate
- 提供形態: GitLab.com
以前のリカバリーオプションが機能せず、アカウントにサインインできない場合は、サポートリクエストを作成して、アカウントの2FAを無効にすることができます。2FAが無効になったら、アカウントを安全に保つために、できるだけ早く再度有効にします。
このサービスは、GitLab.comサブスクリプションがあるアカウントでのみ利用できます。詳細については、ブログ記事を参照してください。
サポートリクエストを作成するには:
- GitLabサポートに移動します。
- Submit a Ticket(チケットを送信)を選択します。
- GitLabサポートアカウントでサインインしてください。サポートアカウントはGitLabアカウントとは異なり、2FAの問題の影響を受けません。
- イシュードロップダウンリストで、GitLab.com user accounts and login issues(GitLab.comユーザーアカウントとログインの問題)を選択します。
- サポートフォームのフィールドに記入します。
- 送信を選択します。
エンタープライズユーザーの2FAをリセットする
有料プランのトップレベルグループのオーナーである場合は、エンタープライズユーザーの2FAを無効にできます。詳細については、エンタープライズユーザーの2FAを無効にするを参照してください。