Giteaの2FA(2段階認証)を紛失した場合の管理者対処方法
(2025/6/8 タイトルを分かりやすくし自身が管理者であるGiteaでしか使えないことを一応追記) 皆さんは2段階認証(以下2FA)を利用しているだろうか。 今回、Giteaの自身の2FAの認証情報・リカバリーキーを紛失してしまい、意図せずロックアウトされてしまったので対処法を紹介する。 日本語情報がなかったので私と同じような状況に陥ってしまった者の役に立つことを願う。 当方の環境 Debian 12 Gitea 1.22.3 MariaDB(MySQL 互換) 2FAにGoogle Authenticatorを利用 本記事の内容を実行すべき人 本記事は自身が管理者であるGiteaにログインできなくなった人を対象としています。 他者が運用しているGiteaサーバーで自身が2FAを紛失した場合は当然この方法は使えないので当該運営者に連絡する必要がある。 CLI上から2FAを無効化できない!! まず、Giteaでは管理者アカウントで2FAを紛失してしまった場合、CLIのgiteaコマンド等で2FAを無効化することはできない。 DBを操作する必要がある。以下に一連の手順を示す。 Giteaを停止する まず、自身のサーバ上で稼働しているGiteaを停止する。 systemdに登録している場合以下のコマンドで停止できる。 systemctl stop gitea バックアップを取る(重要!!) 操作を誤ってしまった時の為にバックアップを取ることをおすすめする。 まずは、Giteaをインストールしたユーザに切り替える。ここではgitとする。 su git そしてGiteaのインストールディレクトリまで移動し、以下のコマンドを実行する。 PATHが通っている場合、インストールディレクトリまで移動しなくてもよい。./を消して実行できる。 ./gitea dump -c Giteaの設定ファイルのパス もし以下のエラーが出た場合、当該ディレクトリに書き込み権限がないということである。 2025/06/01 00:00:00 cmd/dump.go:102:fatal() [F] Unable to create dump file "/usr/local/bin/gitea-dump-0000000000.zip": open /usr/local/bin/gitea-dump-0000000000.zip: permission denied なのでとりあえず以下のコマンドのように-fで自身のホームディレクトリと保存したいファイル名を指定すればよい。 ./gitea dump -c Giteaの設定ファイルのパス -f バックアップファイルを置きたいディレクトリとファイル名のパス 例:./gitea dump -c /etc/gitea/app.ini -f /home/git/gitea-dump-for2fa-recovery.zip なお-fで保存先を指定しなかった場合実行したディレクトリ上に配置される。 MySQLにログインする 以下のコマンドでMySQLにログインする。 なお、DBの接続情報やDB名を忘れた場合Giteaの設定ファイルに書かれているのでそれを使えばよい。 mysql -u ユーザー名 -D GiteaをインストールしたDB名 -p このコマンドを実行した後パスワードを求められるので入力する。 ...