跳转到内容

两步验证:TOTP 与邮件验证码 ​

完成后,登录 Web 界面除了密码,还要再输入一个 6 位验证码。密码泄露了,对方没有验证码也进不来。

适合谁 ​

管理界面可能被不可信的设备或网络碰到:局域网里有访客设备,或者开了 VPN 给多人用。只有你一个人、界面只在可信局域网里用,先把管理员账户和HTTPS做好,收益更大。

它只保护 Web 界面的登录。SSH、SMB、FTP 不受影响,仍要各自加固。

插件信息 ​

项内容
包名openmediavault-2fa-totp(验证器 App 的 6 位码)、openmediavault-2fa-emailotp(邮件验证码)
来源官方插件,和核心在同一个仓库
OMV 8 状态截至 2026-10-22 的官方软件源 synchrony:TOTP 为 8.0.2-1,邮件验证码为 8.0.1-1。两者都要求 OMV 8.5.9 或更新
菜单位置当前用户:账户 → 2FA TOTP(Account → 2FA TOTP)或 账户 → 2FA 电子邮件 OTP(Account → 2FA Email OTP);管理员管理所有人:用户 → 2FA TOTP(Users → 2FA TOTP)或 用户 → 2FA 电子邮件 OTP(Users → 2FA Email OTP)
依赖与冲突只依赖 openmediavault。两个插件互相 Conflicts,同一时间只能装一个

核心在 8.5.0(2026-06)加入了登录页的两步验证插件框架;TOTP 插件 2026-06 首发,邮件验证码插件 2026-07 首发。更早的 8.x 没有这两个插件。

选哪一个 ​

TOTP邮件验证码
验证码来源手机验证器 App 离线生成,每 30 秒变一次登录时 NAS 发邮件,验证码 5 分钟有效
依赖手机和 NAS 的时间都准确NAS 的邮件通知能发出去,账号有邮箱
弱点手机丢了邮箱被盗等于验证码被盗;邮件系统出故障就登不进去
建议首选不想装验证器 App 时再用

启用前先想好丢了验证器怎么办

  • 影响范围:启用后,该账号每次登录都要验证码。验证器丢了又没有恢复通道,你会被挡在 Web 界面外;NAS 上的 SMB、容器等服务不受影响。
  • 前置条件:你能在本机控制台或 root 的 SSH 登录 OMV(恢复要靠 omv-firstaid);NAS 时间准确,见时间、时区与主机名;选邮件方式的话,通知已配好,见配置邮件通知;先在自己的账号上试,并且别关掉当前已登录的浏览器会话,直到验证过新登录流程。
  • 怎么回退:自己在账户菜单里禁用(需要当前验证码);管理员在用户菜单里删除该账号的记录;admin 丢了验证器用 omv-firstaid,见下文「丢了验证器怎么恢复」。

启用 TOTP ​

  1. 系统 → 插件(System → Plugins)搜索 2fa,安装 openmediavault-2fa-totp,装完硬刷新浏览器,见安装、更新与卸载插件。
  2. 进入 账户 → 2FA TOTP,点启用(Enable)。
  3. 页面显示二维码和密钥(Secret)。用验证器 App(Google Authenticator、Authy 等)扫码;App 不支持扫码就手动输入密钥。
  4. 先把密钥存进密码管理器。 以后换手机,用它可以重新添加,不用走恢复流程。
  5. 在验证码(Verification code)里输入 App 当前显示的 6 位数字,点启用。到这一步才真正保存,中途离开不会留下半成品。
  6. 退出登录,用密码再登录一次,确认会要求验证码。

按源码,启用操作直接写入配置数据库,没有对应的部署模块,所以通常不会出现黄色提示条。验证码是 6 位、30 秒一变、HMAC-SHA1,接受前后各一个时间窗口,也就是容忍约 30 秒的时钟误差。

启用邮件验证码 ​

  1. 先配好 系统 → 通知 → 设置(System → Notification → Settings)并启用。账号要有邮箱:admin 用通知设置里的主要 Email,其他用户用自己资料里的 Email。
  2. 安装 openmediavault-2fa-emailotp。如果已装了 TOTP 插件,要先在账户菜单里禁用 TOTP 并卸载它,因为两者互斥,装其中一个时 apt 会把另一个移除。
  3. 进入 账户 → 2FA 电子邮件 OTP,点启用。OMV 马上给你发一封验证码邮件,输入其中的 6 位数字确认。
  4. 之后登录:密码正确后,OMV 发一封标题为 Your sign-in verification code 的邮件,验证码 5 分钟有效。

几个边界情况(来自源码):

  • 账号没有邮箱:该账号登录会被拒绝,日志里是 2FA Email OTP login denied for user ...: no email address configured。删除用户邮箱之前先关掉它的 2FA。
  • 通知没有启用:无法启用或禁用,界面提示 Notifications need to be enabled on this system。
  • 邮件发不出去(SMTP 配置坏了、断网):收不到验证码,登录不了。恢复方法同样是 omv-firstaid。

管理员怎么管理别人的 2FA ​

用户 → 2FA TOTP列出所有启用过的账号(名称、已启动)。选中一行:

  • 删除:清掉该账号的记录,等于关闭它的 2FA。用户丢了验证器时就这么做,他下次登录只要密码,再自己重新启用。
  • 编辑:名称只读,可以改已启动,也能看到并复制密钥。

能看到密钥,说明两步验证防的是密码泄露,不防管理员。邮件验证码对应 用户 → 2FA 电子邮件 OTP,同样可以编辑和删除。

丢了验证器怎么恢复 ​

情况做法
普通用户或其他管理员丢了验证器另一个管理员进入 用户 → 2FA TOTP,选中该用户的记录,点删除。用户用密码登录后重新启用
admin 自己丢了验证器在 OMV 的控制台或 root 的 SSH 运行 omv-firstaid,选 Disable Workbench administrator's 2FA TOTP,确认(默认答案是「否」,要选「是」)。它会关掉 admin 的 2FA 并清除密钥
邮件验证码收不到,admin 被挡住同样用 omv-firstaid,选 Disable Workbench administrator's 2FA Email OTP
没有 root 通道,也没有其他管理员本机控制台用 root 登录。忘了 root 密码,见忘记管理员密码和 omv-firstaid 救援工具
sh
# 在 OMV 的 shell 里,以 root 身份
omv-firstaid

omv-firstaid 的菜单项是英文,按编号选择,编号会随插件增减变化,认文字不要认编号。

命令行方式(只对照源码核实,未在实机验证)

omv-firstaid 只管 admin。要在命令行里清除其他账号的 TOTP 记录,可以用配置数据库工具。先读取,确认只匹配一条;输出里含密钥,别贴到公开的地方:

sh
# 在 OMV 的 shell 里,以 root 身份
omv-confdbadm read --prettify --filter '{"operator":"stringEquals","arg0":"name","arg1":"<用户名>"}' conf.system.tfatotp

确认无误后删除。命令会先备份配置数据库,出错时回滚:

sh
# 在 OMV 的 shell 里,以 root 身份
omv-confdbadm delete --filter '{"operator":"stringEquals","arg0":"name","arg1":"<用户名>"}' conf.system.tfatotp

邮件验证码插件对应的数据模型是 conf.system.tfaemailotp。其他用法见OMV 命令行工具一览和配置数据库。

检查结果 ​

  1. 用无痕窗口登录:密码正确后应出现验证码页面;输入错误验证码被拒绝。
  2. 用户 → 2FA TOTP 的列表里出现你的账号,已启动打勾。
  3. 在一个测试账号上演练一遍:启用,再由管理员删除记录,再重新启用。确认你真的会恢复,再对 admin 启用。

常见问题 ​

验证码总是错。 先查手机和 NAS 的时间。TOTP 只容忍约 30 秒误差,NAS 在 系统 → 日期和时间(System → Date & Time)里要开 NTP,手机用自动校时。

连续输错后提示 Too many failed verification attempts。 验证码连续失败 3 次起开始限速,等待时间从 5 秒起翻倍,上限 300 秒,一段时间没有失败后清零。这是验证码这一步的限速,和密码输错 3 次锁账号是两套机制。

换了手机。 用事先保存的密钥在新手机上添加,不用重置。没存密钥,就让管理员删除记录后重新启用。

脚本或第三方工具通过 OMV 的 JSON-RPC 接口登录。 8.5.0 起登录接口变成两步流程,Session::login 的返回内容变了。启用 2FA 后,这类工具需要适配。

想从 TOTP 换成邮件验证码。 先在账户里禁用 TOTP,卸载 TOTP 插件,再装邮件验证码插件,每个账号重新启用。

参考资料 ​

  • OMV 源码:deb/openmediavault-2fa-totp、deb/openmediavault-2fa-emailotp(tfatotp.inc、tfaemailotp.inc、totp.inc 与 firstaid 模块);核心仓库里的 AUTH_PLUGIN_GUIDE.md。
  • OMV 更新记录:8.5.0(登录两步验证框架)、8.5.9(验证尝试限速)。

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。