banner
约 1,800 字
6 分钟

重置二维码,甲骨文登录二次验证改为Bitwarden验证器的方法

摘要

针对Oracle免费账户原生验证器绑定设备导致换机难的问题,建议更换为Bitwarden等支持账号密码的验证器。操作步骤:登录Oracle云,在用户管理中重置因素,注销后重新登录设置MFA;手机端Bitwarden扫描二维码保存,之后即可使用验证码登录。

前言

如果你有甲骨文的云服务器免费账号(Oracle Cloud Always Free),大概率会非常珍惜它——毕竟免费额度稳定、线路也不错,很多人拿它跑点自己的小服务。也正因为如此,账号安全就格外重要:甲骨文强制开启了二次验证(MFA),所以每次登录都会遇到下面这个界面。

blog image

这时候就需要在手机上的官方验证器 App 里点一下"允许"来通过验证。

blog image

但这个官方验证器 App 有个非常致命的问题

  1. 只和设备绑定,一旦更换手机,无法单纯通过账号密码找回;

  2. 想在新手机用,必须先用老设备完成一次换绑

  3. 也就是说,如果手机丢了、或换机时忘了先换绑,你就可能彻底登不上甲骨文账号

对免费账户来说,一旦登不上想找回可谓千难万难,账号里跑的服务和数据都可能没法处理。为了避免这种"锁号"风险,最好的办法就是换一个通过账号密码绑定的验证器(这类支持账号密码体系、可恢复的验证器有很多,微软、谷歌的都可以)。这次我用的是 Bitwarden——它本身就是密码管理器,把验证码功能也收进去,省得再多装一个 App。

为什么「换个验证器」就能解决问题

这里有个概念必须讲清楚,不然你会以为这只是"换了个 App"。

甲骨文官方 App 用的是推送式验证:服务器推一条通知到你已绑定的那台设备上,你点"允许"。这个流程的前提是那台设备还在你手上——验证凭据(设备令牌)存在手机里,手机没了,凭据就没了。

而 Bitwarden / Google Authenticator 这类用的是 TOTP(基于时间的一次性密码,RFC 6238):绑定的时候,服务器和你之间共享一段密钥,之后双方各自用「密钥 + 当前时间」算出一个 6 位数字,对得上就通过。

关键就在这里:TOTP 的凭据是一段密钥,不是一台设备。密钥可以导出、可以备份、可以抄在纸上、可以同步到多台设备——所以只要把它迁到 Bitwarden 里,你就不再被任何一台特定手机绑死了。

⚠️ 动手之前,先确认两件事

这一步很关键,因为「重置因素」是个有风险的操作——它会把当前绑定的验证器清掉,万一中途出问题(网页卡住、验证码没收到、手机没电),你可能就把自己锁在门外了。

所以开始之前请先确认:

  1. 你当前的账号能正常收到甲骨文的邮件(备用联系方式有效),万一出问题还有找回路径;

  2. 登录状态稳定,别在弱网或者需要频繁重连的环境下操作;

  3. 一次性做完,不要重置到一半去干别的。

如果这个账号里还挂着重要的服务,再稳妥一点的做法是:先把这台机器上的关键数据和服务做好备份,确认即使账号暂时进不去也不影响业务,再动手迁验证器。

更换验证器

操作分两段:先在甲骨文后台重置验证因素,再用 Bitwarden 重新绑定

  1. 登录甲骨文云,右上角点击身份域

blog image
  1. 进入用户管理,点击你的用户名

blog image
  1. 在右上角的操作里,点击重置因素(这一步会清掉当前绑定的验证器)。

blog image

点下去之前再确认一次:你手头有可用的备用验证方式(邮箱)。这一步是不可逆的——重置之后,原来的官方 App 立刻失效。

  1. 注销后重新登录,输入用户名密码后,系统会要求你重新设置二次验证。

blog image
  1. 启用安全验证后,选择移动应用程序作为验证方式。

blog image
  1. 勾选脱机模式或使用其他验证程序——这一步很关键,它允许你使用 Bitwarden / Google Authenticator 这类通用 TOTP 验证器,而不是只能用它自家 App。

blog image

名字里的"脱机模式"指的是验证码在本地算,不依赖网络请求——这正是 TOTP 的工作方式。只勾"推送通知"的话,你还是会被锁死在官方 App 上。

  1. 手机上打开 Bitwarden,新增一条登录记录,点击设置验证器密钥

blog image
  1. 扫描甲骨文页面上的二维码,然后填写项目名称(比如"Oracle")保存。

blog image

二维码扫不上(有些屏幕反光或者缩放比例不对)时,可以用手动输入密钥:二维码本质就是一段 otpauth://totp/...?secret=XXXXXX 的文本,把 secret= 后面那串 Base32 字符抄进 Bitwarden 就行。

  1. 保存后,Bitwarden 密码库里就多了这一项验证码

blog image
  1. Bitwarden 会像普通验证器一样每 30 秒循环生成六位验证码

blog image
  1. 把当前显示的验证码填入甲骨文的登录页面。

blog image
  1. 验证通过后,就完成了绑定。

blog image
  1. 之后每次登录,直接打开 Bitwarden 看当前验证码输入即可,不再依赖特定设备、也不用那个专门的 App 了。

blog image

这么做安全吗?说点实话

把验证码和密码放进同一个 App,很多人第一反应是"这不是把鸡蛋放一个篮子吗"——这个顾虑是对的,值得说清楚。

普通用户场景下,这样做整体是更安全的

  • 官方 App 的锁号风险是必然会发生的(只要你会换手机),而 Bitwarden 被攻破是小概率事件

  • Bitwarden 本身可以再叠一层二次验证(登录 Bitwarden 时要求额外的验证码/密钥),相当于「主密码 + TOTP + 设备验证」三层;

  • 两个验证因素(密码和 TOTP)虽然放在同一个 App 里,但它们仍然是两个独立的密钥,只是托管在同一个保险箱里。

但如果你把甲骨文账号当作核心资产(比如跑着生产服务),建议再往前一步:

  1. 把 TOTP 密钥单独备份一份离线——绑定环节拿到的那个 secret 抄到纸上或离线密码库里。这样即使 Bitwarden 整个丢了,密钥还在,随时能重新绑。

  2. 或者用独立的验证器 App(Aegis、Ente Auth 都支持导出),和密码管理器分开存放。

  3. 更高要求就上硬件密钥(YubiKey 之类),甲骨文支持 FIDO 认证,物理密钥比任何 App 都稳。

顺带一提:无论用哪种方式,把恢复码保存下来这条永远成立。迁移完成后也建议在甲骨文后台顺手检查一遍备用邮箱和恢复选项。

常见问题

Q:填进去的验证码总是提示错误?

99% 是手机时间不同步。TOTP 是靠"当前时间"算的,服务端和你的设备时间差超过 30 秒就会对不上。把手机的「自动设置时间」打开、同步一次网络时间即可。电脑上填验证码的话,同样要保证系统时间准确。

Q:二维码扫不出来怎么办?

用前面说的手动输入密钥方式。有些验证器也支持直接粘贴 otpauth:// 整串链接。

Q:Bitwarden 账号也丢了怎么办?

这就是为什么强调要离线备份 TOTP 密钥。只要密钥在手,登录甲骨文时选"无法使用验证器",走重新绑定的流程就能恢复。所以那道 secret 不能只存在 Bitwarden 里。

Q:能同时绑多个验证器吗?

甲骨文这边是一对一绑定的,但同一个 TOTP 密钥可以在多个验证器里同时添加——比如 Bitwarden 和手机自带的验证器各存一份,两边都能算出一样的码。这是 TOTP 相比推送式验证的又一个好处。

Q:以后换新手机要重新绑吗?

不需要。装好 Bitwarden 登录同一个账号,验证码就在里面,不需要老设备参与。这正是这次迁移最大的收益。

小结

把甲骨文验证器换成 Bitwarden 这类可恢复的账号密码体系,核心收益是换机不再锁号:只要记得 Bitwarden 主密码(且开启了 Bitwarden 自己的恢复机制),任何时候都能重新拿到甲骨文的验证码,彻底摆脱"验证器绑死在某台旧手机"的窘境。

如果你也担心甲骨文账号哪天因换机登不上,强烈建议趁现在能登录时,尽早做一次验证器迁移——操作全程 10 分钟,却能在未来避免一次大麻烦。用其它支持 TOTP 的密码管理器(如 1Password、KeePassXC)同理。

END