2FA с OTP не работает после восстановления из резервной копии

Я перенёс свой Discourse с личного ПК на «всегда включённый» сервер, оба находятся в одной сети. Создал свежий Docker-контейнер с Discourse, а затем восстановил резервную копию, как показано здесь: Restore a backup from the command line

Всё работает отлично, кроме входа для пользователей, которые активировали двухфакторную аутентификацию (2FA) с помощью OTP. Я использую AndOTP на Android, и OTP больше не действителен. Кроме того, создание нового токена 2FA невозможно, потому что токен, созданный приложением, не принимается Discourse. То есть, даже несмотря на то, что я только что отсканировал QR-код, созданный токен оказывается неверным.

Думаю, я что-то сделал не так?

Чтобы сузить круг проблем: я только что попробовал защитить свой аккаунт с помощью Yubikey, и всё прошло отлично.

Проблема только в OTP.

Вы пробовали удалять записи OTP перед созданием новых? Обратитесь к этому сообществу за помощью: Отключение 2FA через консоль - руководство / системный администратор - Discourse Meta

Нет, я не делал этого — спасибо вам за это. Я помог себе сам, создав нового администратора, войдя под этой учётной записью и используя веб-интерфейс для отключения двухфакторной аутентификации (2FA) для затронутых пользователей.

Теперь я перешёл по вашей ссылке (спасибо вам за это), и она сработала в том смысле, что моя 2FA с YubiKey была отключена.

Но использовать 2FA с OTP снова? Нет. Я не могу добавить приложение-аутентификатор, потому что после сканирования QR-кода сгенерированный токен не является действительным. Это не было проблемой на исходном экземпляре.

О, я недавно не сталкивался с этим. Какую версию Discourse вы сейчас используете?

Возможно, рассинхронизация времени между сервером и клиентом?

Обе версии (источник резервной копии и система, куда она была восстановлена) — 2.8.0.beta1

Проверю это завтра — сегодня у меня нет доступа к системе. Это может быть проблемой, но я довольно уверен, что ntp активен и должен корректировать внутренние часы сервера.

Вы были правы, это решило мою проблему. Хотя ntp был установлен, расхождение во времени было настолько большим, что ntp больше не мог его исправить. Я принудительно выполнил синхронизацию, и OTP снова работает.