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 解决了一个真实痛点,但它自己也变成了一个单点。
我的建议:主要账号用它,关键账号(邮箱、银行)同时保留纸质恢复码。
备份这件事,永远是"多一份"比"更先进"重要。
有问题留言。
留言