外观
两步验证: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 时再用 |
启用前先想好丢了验证器怎么办
启用 TOTP
系统 → 插件(System → Plugins)搜索2fa,安装openmediavault-2fa-totp,装完硬刷新浏览器,见安装、更新与卸载插件。- 进入
账户 → 2FA TOTP,点启用(Enable)。 - 页面显示二维码和密钥(Secret)。用验证器 App(Google Authenticator、Authy 等)扫码;App 不支持扫码就手动输入密钥。
- 先把密钥存进密码管理器。 以后换手机,用它可以重新添加,不用走恢复流程。
- 在验证码(Verification code)里输入 App 当前显示的 6 位数字,点启用。到这一步才真正保存,中途离开不会留下半成品。
- 退出登录,用密码再登录一次,确认会要求验证码。
按源码,启用操作直接写入配置数据库,没有对应的部署模块,所以通常不会出现黄色提示条。验证码是 6 位、30 秒一变、HMAC-SHA1,接受前后各一个时间窗口,也就是容忍约 30 秒的时钟误差。
启用邮件验证码
- 先配好
系统 → 通知 → 设置(System → Notification → Settings)并启用。账号要有邮箱:admin用通知设置里的主要 Email,其他用户用自己资料里的 Email。 - 安装
openmediavault-2fa-emailotp。如果已装了 TOTP 插件,要先在账户菜单里禁用 TOTP 并卸载它,因为两者互斥,装其中一个时 apt 会把另一个移除。 - 进入
账户 → 2FA 电子邮件 OTP,点启用。OMV 马上给你发一封验证码邮件,输入其中的 6 位数字确认。 - 之后登录:密码正确后,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-firstaidomv-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 命令行工具一览和配置数据库。
检查结果
- 用无痕窗口登录:密码正确后应出现验证码页面;输入错误验证码被拒绝。
用户 → 2FA TOTP的列表里出现你的账号,已启动打勾。- 在一个测试账号上演练一遍:启用,再由管理员删除记录,再重新启用。确认你真的会恢复,再对
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(验证尝试限速)。