アプリケーション開発ポータルサイト
ServerNote.NET
カテゴリー【Git/GitHub
GitLabの2段階認証ログインが端末初期化等で不可能になった場合の対処法
POSTED BY
2021-02-26

プライベートなソースコードをオンラインでバージョン管理する場合GitHubではなく、GitLabのほうを使うことが多い。

GitLabに登録してまず一番最初に行うことは、作業サーバーからPush/Pullするため、SSHキー(公開鍵)の登録することである。これは、User Settings→SSH Keys→Add an SSH keyで、その場で作成(generate one)するか、既存の公開鍵(id_ed25519.pub/authorized_keys)を貼り付ける(秘密鍵id_ed25519ではない)。秘密鍵は自分で持っておく。

SSHキーを登録したら、作業サーバー側の.ssh/config

Host gitlab.com
IdentityFile ~/.ssh/id_ed25519 #秘密鍵ファイル

などと秘密鍵を指定すれば、

git clone git@gitlab.com:my-group/my-project.git

などと、SSH経由でクローン・Push/Pullが可能となる。

ところで、GitLabのWEB管理画面にログインする場合、セキュリティの観点から、通常のID・パスワードを入力したあと、さらに携帯端末のワンタイムパスワードアプリからワンタイムパスワードを入れなければならない2段階認証を採用している。2段階認証の設定方法は、以下の通りである。

1、User Settings→Account→Two-Factor Authenticationページへ行く

2、携帯端末で、「FreeOTP」アプリをダウンロードして開く

3、GitLabのページに表示されているQRコードをFreeOTPアプリで読み取る

4、FreeOTPアプリで表示された数値文字列(PINコード)をGitLabのページに打ち込む

以上の作業で、次回のログインからは、ユーザー名とパスワード後、アプリで表示されたワンタイムパスワードを打ち込むことで晴れてログイン可能となる。

これはつまり、アプリの存在を忘れて携帯端末を初期化してしまった場合ログイン不可能となることを意味する。

そのようなときに備えて、GitLabの2段階認証設定完了画面でリカバリーコードが表示されていたはずである。これを打ち込めば、再度ログインできるわけだが、それに気づかず閉じてしまいリカバリーコードすら無い状態である。こんな場合どうするか?

このような場合でも、SSHキーの登録さえしていればその場で作業サーバーからリカバリーコードが取得できる。

作業サーバーで、以下のように打つ。

ssh git@gitlab.com 2fa_recovery_codes

Any existing recovery codes you saved will be invalidated. (yes/no)
yes

すると、以下のように10通りのリカバリーコード16進文字列が表示される。(*は実際の文字列)

Your two-factor authentication recovery codes are:

***************
***************
***************
***************
***************
***************
***************
***************
***************
***************

During sign in, use one of the codes above when prompted for
your two-factor code. Then, visit your Profile Settings and add
a new device so you do not lose access to your account again.

最初これをどうログイン画面で打つのかわからなかったが、なんてことはない、このなかのどれか1行好きなものを選んで、ワンタイムパスワードの代わりに入力するだけである。

Enter the code from the two-factor app on your mobile device. If you've lost your device, you may enter one of your recovery codes.

と表示されている。ワンタイムパスワード入力フォームに入れれば良いだけ。

このような経験をするともう2段階認証なんてヤメとか思うことがあろうが、2段階認証はプロジェクトグループの管理者が他の作業者を招待する際、その作業者がプロジェクトにアクセスするには2段階認証を必須とするという設定が可能であり、ほとんどの場合それを採用していると思われるので、面倒でも継続しておくべきであろう。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【webmaster/管理人】
自営業プログラマー
ご連絡は以下アドレスまで★

☆お仲間ブログ1↓
匠のコーヒーブレイク
☆お仲間ブログ2↓
一人社長の不動産業務日誌
【キーワード検索】