Como corrigir o código 2FA que não chega no All in One Security
O que é o código 2FA do AIOS que não chega ou é recusado?
O código 2FA do AIOS que não chega ou é recusado é a falha em que o segundo fator de login do All in One Security não aceita o código de seis dígitos no momento de entrar no painel. O AIOS não envia o código por e-mail ou SMS por padrão: ele usa TOTP ou HOTP, padrões em que o próprio app autenticador (Google Authenticator, Authy, FreeOTP) gera o código no celular a partir de um segredo escaneado por QR Code. No TOTP, esse código é derivado da hora atual e troca a cada 30 segundos.
Como identificar
- Ao entrar no painel, o AIOS pede o código do app e devolve ‘Your one time password is incorrect’ ou ‘O código informado está incorreto’ mesmo com o código recém-gerado.
- O usuário espera um código por e-mail ou SMS que nunca chega, porque o AIOS, na configuração padrão, gera o código no app autenticador, não por mensagem.
- O código do Google Authenticator funciona em outro site mas é recusado só no WordPress com AIOS, sinal de relógio do servidor fora de sincronia.
- O código passa a ser aceito quando você digita rápido e falha quando demora, indicando janela TOTP de 30 segundos estourando por diferença de horário.
- Após trocar de celular ou reinstalar o app, todo código gerado é recusado, porque o novo aparelho não tem o segredo original escaneado no QR Code.
Como prevenir
- Guarde os códigos de emergência que o AIOS gera na configuração do 2FA em um cofre de senhas, fora do celular do autenticador.
- Prefira TOTP a HOTP no AIOS: o TOTP se corrige sozinho com a hora, enquanto o HOTP sai de sincronia quando códigos são gerados sem uso.
- Mantenha o horário do servidor sincronizado por NTP e o do celular em automático, para o cálculo do código bater dos dois lados.
- Ao trocar de celular, reescaneie o QR Code do AIOS no novo aparelho antes de desativar o antigo, preservando o segredo do TOTP.
Causa
- Relógio do servidor PHP adiantado ou atrasado em relação à hora real, jogando o cálculo do TOTP para fora da janela de 30 segundos (verificável comparando a saída de date no servidor com hora oficial).
- Hora do celular configurada em manual em vez de automática pela rede, fazendo o app autenticador gerar o código com base em um horário diferente do servidor.
- Método HOTP (baseado em contador) selecionado no AIOS e fora de sincronia, porque o app gerou vários códigos que nunca foram usados no login e o contador avançou.
- Segredo TOTP perdido após troca ou reset do celular: o QR Code original não foi reescaneado, então o app gera códigos a partir de um segredo que não corresponde mais ao registrado no usuário.
- Usuário esperando código por e-mail ou SMS, quando o AIOS na configuração padrão só entrega o código pelo app autenticador via TOTP ou HOTP, sem envio por mensagem.
Como resolver
- Confirme que o segundo fator do AIOS é por app, não por e-mail: abra a tela de configuração de Two Factor Authentication do AIOS e veja qual método está ativo. Se for TOTP ou HOTP, o código vem do app autenticador no celular e nunca chega por mensagem; é ali que você lê o código de seis dígitos.
WP Security -> Two Factor Authentication -> Settings - Acerte a hora do celular para automática: no aparelho que roda o autenticador, troque o horário de manual para definido pela rede e confirme o fuso. O TOTP depende da hora exata, então um celular alguns minutos fora já faz o servidor recusar o código.
Android: Configurações -> Sistema -> Data e hora -> Definir horário automaticamente iPhone: Ajustes -> Geral -> Data e Hora -> Definir Automaticamente - Sincronize o relógio do servidor por NTP: peça à hospedagem para sincronizar o horário do servidor ou, com acesso SSH, force a sincronização por NTP. O relógio do servidor PHP é o lado que valida o TOTP, então ele precisa bater com a hora real.
timedatectl status sudo timedatectl set-ntp true sudo systemctl restart systemd-timesyncd - Entre por código de emergência e reconfigure o 2FA: se nenhum código é aceito, use um dos códigos de emergência que o AIOS gera na configuração do segundo fator para entrar. Em seguida, apague o registro 2FA atual e escaneie um QR Code novo no app, gerando um segredo limpo.
WP Security -> Two Factor Authentication -> Setup -> Reset / novo QR Code - Destrave o usuário pelo banco se ficou para fora: sem código de emergência e trancado para fora, remova o registro de 2FA do usuário direto no banco para liberar o login, e só depois reative o segundo fator e guarde os novos códigos de emergência.
DELETE FROM wp_aiowps_login_activity WHERE user_id = ID_DO_USUÁRIO; DELETE FROM wp_usermeta WHERE user_id = ID_DO_USUÁRIO AND meta_key LIKE 'aiowps_user_2fa%';
-- Reset de emergência do 2FA do AIOS para UM usuário (trancado para fora).
-- Rode no phpMyAdmin/Adminer COM BACKUP do banco antes. Ajuste o prefixo (wp_) e o ID.
-- 1) descubra o ID do usuário pelo login
SELECT ID, user_login FROM wp_users WHERE user_login = 'admin';
-- 2) remova o segredo/registro de 2FA do AIOS desse usuário (libera o login por senha)
DELETE FROM wp_usermeta
WHERE user_id = 1
AND meta_key LIKE 'aiowps_user_2fa%';
-- 3) limpe a atividade de login travada do AIOS para esse usuário
DELETE FROM wp_aiowps_login_activity WHERE user_id = 1;














