POST

2FAuth:两步验证码存在自己家里,换手机也不丢

Google Authenticator 换手机要重新绑一遍?2FAuth 把验证码放在你自己的服务器上,多设备同步,还有备份导出。

两步验证(2FA)已经成了标配。但大部分人用的还是手机上的验证器 App,它有个致命问题:换手机、丢手机,等于把所有账号的验证码弄丢。

有些账号有恢复码,有些没有。没有的那些,你就等着申诉吧。

2FAuth 的思路:把验证码存服务器上,手机只是个显示终端。

装

services:
  2fauth:
    image: 2fauth/2fauth
    container_name: 2fauth
    ports: ["8100:8000"]
    volumes: ["./2fauth:/2fauth"]
    environment:
      - APP_KEY=随便一串32位字符
      - APP_URL=http://192.168.1.10:8100
      - DB_CONNECTION=sqlite
    restart: unless-stopped

打开 http://NAS地址:8100,注册账号(第一个是管理员)。

把验证码搬进来

三种方式:

一、扫码 在要加 2FA 的网站上点"设置两步验证",出现二维码,用 2FAuth 扫。

二、手动输入 二维码旁边有一串密钥(Base32),粘进去。

三、从别的 App 迁移

  • Google Authenticator:它有"导出账号"功能(生成二维码),2FAuth 扫那个码能批量导入;
  • Aegis / Authy:导出 JSON 或二维码,2FAuth 支持导入。

多设备同步怎么解决

这是它最实际的价值:手机上、平板上、电脑上,登录同一个账号,看到同一批验证码。

不需要"扫一次再同步",因为它本来就是服务端存储。你只要让每台设备都能访问到它。

外网访问是必须的一步——不然你在外面登录网站时取不到码。

两种做法:

  • Cloudflare Tunnel + Access:安全,站里有专门一篇;
  • CPN 私网:直接接进家里的局域网。

千万别把它裸奔在公网。这个服务里是你的全部二次验证密钥。

几个必须做的安全设置

一、开账户密码 + 二次验证 讽刺但必要:用它管 2FA,它自己也要有 2FA。

二、加密数据库 2FAuth 支持 APP_KEY 加密存储。别用默认值,自己敲一串。

三、定期导出备份 设置里有导出功能,导出来是一份加密 JSON。存到离线的 U 盘里。

四、别只存这一份 最重要的几个账号(邮箱、银行、主密码管理器),留一份纸质恢复码在抽屉里。

会踩的坑

验证码不对 手机时间不准。它的 TOTP 依赖时间,系统时间差超过 30 秒就错。开自动同步时间。

导入 Google Authenticator 失败 那个导出的二维码是特殊格式,要用它的"迁移"页面扫,不是普通扫描页。

换了域名访问不了 APP_URL 写死了一个地址。改环境变量重启。

容器重建后数据没了 ./2fauth 卷没挂对。这个目录里是数据库。

忘记密码 没有找回。管理员可以在容器里用 php artisan 2fauth:reset-user-password 重置。

它适合谁

  • 开了很多 2FA、担心换手机丢账号的;
  • 有几台设备,想在哪儿都能取码的;
  • 已经能安全地从外网访问 NAS 的。

不适合:只需要管两三个账号的(手机 App 够用);不想把全部二次验证密钥放在一台自建服务器上的人——这是真实的单点风险,自己权衡。

最后

2FAuth 解决了一个真实痛点,但它自己也变成了一个单点。

我的建议:主要账号用它,关键账号(邮箱、银行)同时保留纸质恢复码。

备份这件事,永远是"多一份"比"更先进"重要。

有问题留言。

👁 - 次浏览

留言

← 返回首页