Ente Auth 迁移完全指南:从 Authy、Microsoft Authenticator、Steam 及其他 2FA 应用导入/导出你的 TOTP 令牌
Ente Auth 迁移完全指南从 Authy、Microsoft Authenticator、Steam 及其他 2FA 应用导入/导出你的 TOTP 令牌【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente本指南以 docs/docs/auth/migration 文档为主线系统讲解如何将已有 2FA 令牌从 Authy、Microsoft Authenticator、Steam 及其他主流验证器导入 Ente AuthEnte Authenticator以及如何将 Ente Auth 中的令牌以加密或明文格式导出。读完本文你将掌握多条可落地的迁移路径、Ente 加密导出格式的底层原理Argon2id XChaCha20-Poly1305以及借助 Ente CLI 实现自动备份与离线解密的具体操作。迁移概览Ente Auth 支持哪些入口Ente Auth 的迁移文档覆盖了「迁入」导入与「迁出」导出两个方向共包含五个独立主题主题文档位置适用场景从 Authy 迁移authyAuthy 无法直接导出需借助外部工具/设备提取令牌从 Microsoft Authenticator 迁移microsoft-authenticator无导出文件需逐个账号重新配置 2FA从 Steam 导入steam使用 steamguard-cli 生成 QR 码后扫码导入从其他应用导入import支持 2FAS、Aegis、Bitwarden、Google Authenticator 等导出 Ente Auth 数据export加密导出、CLI 自动备份、本地备份[!NOTE] 迁移前请先确认你的 Ente Auth 应用版本Steam 认证器代码仅在auth-v3.0.3 之后的版本受支持请先核对应用版本号再开始迁移见 steam 文档。从 Authy 迁移Authy 无法在应用内直接导出 2FA 码这意味着如果只走应用自带功能你将不得不为所有账号重新配置 2FA。好在社区提供了多种绕过方案。迁移文档docs/docs/auth/migration/authy/index.md记录了四条路径。[!WARNING]Authy 已停止对桌面应用的全部支持因此方法 1Neeraj 导出工具和方法 2gboudreau 的 gist 指南已无法再用于从 Authy 导出数据。你需要在以下路径中选择其一拥有一台 iOS 设备加电脑方法 4Authy-iOS-MiTM或拥有一台已 root 且通过 Play Integrity 的 Android 手机方法 3。[!CAUTION] 无论使用哪种方法绝对不要分享本指南生成出的任何 JSON 和 TXT 文件——它们包含你的未加密 TOTP 密钥同时这些方法不保证能导出你的全部代码请在确认所有账号都已成功导入后再删除 Authy 中的任何代码。方法 1Neeraj 的导出工具已被 Authy 桌面端下线该方法面向希望跳过繁琐技术环节的普通用户。下载 authy-export 工具 对应操作系统的二进制在终端中执行./binary-name path_to_export_file假设二进制文件名保持原样、终端工作目录就是二进制所在目录macOSApple Silicon 设备可能需要 Rosetta 2./authy-export-darwin-amd64 authy_codes.txtLinux./authy-export-linux-amd64 authy_codes.txtWindows./authy-export-windows-amd64.exe authy_codes.txt该工具会生成authy_codes.txt——内容为Ente 明文导出格式的 Authy 代码可直接导入 Ente Auth。方法 2gboudreau 的 GitHub 指南已被 Authy 桌面端下线该方法面向有充裕时间、偏好成熟且经过验证方案的高级用户。按照 gboudreau 的 gist 指南 操作会生成名为authy-to-bitwarden-export.json的 JSON 文件内容是Bitwarden 导出格式的 Authy 代码同样可直接导入 Ente Auth。方法 2.1导出成功但导入失败时的兜底[!NOTE] 仅适用于通过方法 2 成功导出、却无法导入 Ente Auth 的用户。若导出本身失败请改用方法 1。通常 Bitwarden 导出可直接导入 Ente Auth若失败可使用社区提供的 Python 脚本把 JSON 转成 Ente 可用的 TXT 文件脚本下载地址见 authy 文档核心逻辑如下import json import os totp [] accounts json.load(open(authy-to-bitwarden-export.json,r,encodingutf-8)) for account in accounts[items]: totp.append(account[login][totp]\n) writer open(auth_codes.txt,w,encodingutf-8) writer.writelines(totp) writer.close() print(Saved to os.getcwd() /auth_codes.txt)使用前需安装 Python并确保 Python 脚本与 JSON 文件在同一目录。运行方式macOS/Linux 终端执行python3 authy_to_ente.pyWindows 执行py -3 authy_to_ente.py。运行后将生成auth_codes.txt可导入 Ente Auth。方法 3rooted Android 手机该方法面向拥有Android 6 及以上、已 root 且通过 Play Integrity的 Android 手机的高级用户有两种提取工具可选。使用 Android OTP Extractorpuddly/android-otp-extractor在电脑上安装 Python 3 和 adb可从 Google Platform Tools 下载二进制将 adb 加入 PATHWindows搜索编辑系统环境变量→环境变量→ 在用户变量中编辑path→新建并填入 Platform Tools 解压路径开启手机 USB 调试设置 → 关于手机 → 连续点击版本号7 次以上开启开发者选项 → 系统设置 → 开发者选项 → 开启USB 调试在电脑上运行adb devices验证连接手机端需点允许安装 Android OTP Extractorpip install githttps://github.com/puddly/android-otp-extractor从 Play Store 安装 Authy 并登录你的账号导出 TOTP 为二维码与 URLpython -m android_otp_extractor --prepend-issuer --include authy使用 Aegis Authenticatorbeemdevelopment在已 root 手机上安装 Authy 并登录从 Google Play 安装 Aegis Authenticator点击右上角三个点 → Import Export点击 Import from another app 并选择 Authy应用会请求 root 权限并自动从 Authy 导入代码再通过 Import Export 菜单中的 Export to file 将代码导出为json或txt。方法 4Authy-iOS-MiTMiOS 用户该方法面向无法使用方法 1/2已被封堵、也没有 rooted Android 设备的iOS 技术用户。原理是拦截 Authy 应用首次登录时接收的数据——其中包含你的加密认证令牌——转储后用你的备份密码解密再转换为 Ente 令牌文件。最新指引见 Authy-iOS-MiTM 更新版 与 原版指南原版生成的decrypted_tokens.json需用 Python 转换脚本 转成ente_auth_import.plain文件再传输到设备上导入。将导出文件导入 Ente Auth方法 1 / 2.1 / 4 产生的 TXT 文件明文导入将 TXT 文件拷贝到装有 Ente Auth 的设备登录你的账号若未登录或选择 Use without backups无备份使用打开左上角汉堡菜单 → Data → Import codes选择 Plain text纯文本选择之前生成的 TXT 文件。方法 2 产生的 JSON 文件Bitwarden 格式导入将 JSON 文件拷贝到装有 Ente Auth 的设备登录账号或选择 Use without backups打开汉堡菜单 → Data → Import codes选择 Bitwarden 选项选择之前生成的 JSON 文件若失败回退到方法 2.1。方法 3 产生的二维码打开手机上的 Ente Auth登录账号或选择 Use without backups点击右下角添加按钮选择 Scan a QR code 扫描浏览器中的二维码。安全提示迁移完成后建议立即删除迁移过程中产生的未加密 JSON/TXT 文件避免密钥泄露。从 Microsoft Authenticator 迁移Microsoft Authenticator不提供把 TOTP 码转移到其他验证器的直接导出选项因此从它迁移到 Ente Auth 需要为每个账号重新配置 2FA。其自带的备份/恢复功能主要用于把账号恢复到 Microsoft Authenticator 自身且仅在同一设备类型之间有效例如 iOS 备份无法在 Android 上恢复。完整步骤见 microsoft-authenticator 文档。[!WARNING] 在确认所有账号都已加入 Ente Auth 并验证通过之前不要删除 Microsoft Authenticator。同时开始前请确保重要账号已有恢复码或其他登录方式。方法 1为每个账号重新配置 2FA由于没有可移植的导出文件最安全的迁移方式是逐个账号重新配置安装 Ente Auth安装在手机或桌面端如需加密备份与跨设备同步则登录 Ente 账号也可以选择无备份模式打开账号的安全设置从浏览器登录该服务查找类似以下命名的设置项Two-factor authentication、Multi-factor authentication、Authenticator app、Security info、Two-step verification、Login verification更换验证器应用大多数服务在配置完成后不会再次展示原始二维码通常需要先移除现有验证器再重新添加此时网站会展示新的二维码或设置密钥setup key。对微软账号而言通常可在 Security 页面下的 Manage how I sign in 中找到该入口将账号加入 Ente Auth打开 Ente Auth点击添加按钮扫描服务展示的二维码若无法扫码可在服务端选择手动设置将密钥复制进 Ente Auth验证代码在服务的设置页输入 Ente Auth 生成的代码服务确认有效后再继续重复所有账号全部账号在 Ente Auth 中添加并测试通过后再从 Microsoft Authenticator 中移除。方法 2将 Ente Auth 作为附加验证器部分服务允许在不移除现有验证器的前提下添加多个验证器登录账号打开安全设置选择添加另一个验证器应用用 Ente Auth 扫描新的二维码验证 Ente Auth 生成的代码在确认 Ente Auth 正常工作前保留 Microsoft Authenticator。这种方法比先删除旧验证器更安全但并非所有服务都支持。微软工作或学校账号组织可能管控允许的认证方法若看不到添加验证器的选项或设置强制使用 Microsoft Authenticator请联系管理员。部分组织出于推送审批或号码匹配number matching的需要强制要求 Microsoft Authenticator不允许第三方验证器。迁移完成后保存重要账号的恢复码如需跨设备访问确保 Ente Auth 备份与同步已启用测试最重要的登录流程仅在测试通过后移除 Microsoft Authenticator 中的旧条目将恢复码存放在安全位置。从 Steam 导入Steam 的 2FA 代码可通过 steamguard-cli 工具生成 QR 码后扫码导入 Ente Auth。完整步骤见 steam 文档。[!WARNING] Steam 认证器代码仅在auth-v3.0.3 之后的 Ente Auth 版本受支持迁移前请核对应用版本号。安装 steamguard-cliWindows从 releases 页 下载steamguard.exe放入任意文件夹示例使用%USERPROFILE%\Desktop打开 Powershell 或命令提示符提示符应位于%USERPROFILE%如C:\Users\username用cd切换到存放steamguard.exe的目录示例cd Desktop输入.\steamguard.exe --help验证可运行。LinuxUbuntu/Debiansudo dpkg -i ./steamguard-cli_version_amd64.debLinux其他发行版chmod x ./steamguard sudo mv ./steamguard /usr/local/bin之后即可直接运行steamguard --help。登录 Steam 账号steamguard setup # 用 steamguard-cli 新建账号生成并导入二维码steamguard qr # 为 maFiles 中的第一个账号打印二维码 steamguard -u account name qr # 为指定账号打印二维码打开 Ente Auth点击 按钮选择 Scan a QR code 扫描该二维码Steam 代码即进入 Ente Auth。从其他 2FA 提供商导入除上述专门文档覆盖的提供商外Ente Auth原生支持从以下提供商导入完整列表见 import 文档2FAS AuthenticatorAegis AuthenticatorandOTP支持加密备份MOTP 除外BitwardenGoogle AuthenticatorLastPassProtonRaivo OTP[!NOTE] 该列表可能滞后于应用实际支持范围请以应用内显示的最新提供商列表为准。各提供商的导入方式可在应用内查看。此外Ente Auth 还支持从Ente 自身的加密导出和纯文本文件导入。纯文本文件必须采用如下格式otpauth://totp/provider.com:youemail.com?secretYOUR_SECRET多个代码可用逗号或换行分隔。这意味着即使你的旧提供商不在上述列表中也可以先把旧数据转换为这种明文otpauth://格式再导入 Ente。实际上Authy 迁移方法 1 生成的authy_codes.txt正是这种明文格式——Authy 导出工具的输出即是Ente 明文导出格式。导出 Ente Auth 数据Ente Auth 提供了三种数据迁出路径加密导出文件Encrypted Export、CLI 自动备份与本地备份Local backup。详细说明见 export 文档。Auth 加密导出格式Encrypted Export导出时认证数据使用由用户密码派生的密钥加密。导出 JSON 结构如下含版本号与 KDF 参数{ version: 1, kdfParams: { memLimit: 4096, opsLimit: 3, salt: example_salt }, encryptedData: encrypted_data_here, encryptionNonce: nonce_here }字段含义字段说明version导出格式版本号kdfParams密钥派生函数KDF参数encryptedData加密后的认证数据encryptionNonce加密所用的 nonceVer 1 格式规格KDF 算法ARGON2ID解密后的数据格式otpauth://totp/...以换行分隔加密算法XChaCha20-Poly1305KDF 参数kdfParamsmemLimit算法的内存限制MiB 级别opsLimit算法的迭代/操作次数限制salt派生过程中使用的盐值加密数据使用由用户密码与 KDF 参数派生的密钥配合XChaCha20-Poly1305算法进行加密。底层原理CLI 中的解密实现加密导出格式的逆向实现可以在 Ente CLI 源码中找到cli/pkg/authenticator/decrypt.go 中的DecryptExport函数完整还原了该格式定义的 Go 结构体与文档中的 JSON 字段一一对应Version、KDFParams{MemLimit, OpsLimit, Salt}、EncryptedData、EncryptionNonce见 decrypt.go#L11-L22版本校验if export.Version ! 1 { return ... unsupported export version }即当前仅支持 version 1 的导出文件decrypt.go#L44-L46口令输入未通过--password传入密码时CLI 会交互式提示 Enter password to decrypt exportdecrypt.go#L48-L53密钥派生调用eCrypto.DeriveArgonKey(password, salt, memLimit, opsLimit)派生解密密钥。KDF 的具体实现位于 cli/internal/crypto/crypto.go#L34-L47func DeriveArgonKey(password, salt string, memLimit, opsLimit int) ([]byte, error) { if memLimit 1024 || opsLimit 1 { return nil, fmt.Errorf(invalid memory or operation limits) } saltBytes, err : base64.StdEncoding.DecodeString(salt) if err ! nil { return nil, fmt.Errorf(invalid salt: %v, err) } key : argon2.IDKey([]byte(password), saltBytes, uint32(opsLimit), uint32(memLimit/1024), 1, 32) return key, nil }可以看到盐值是 base64 编码后传入argon2.IDKey参数为(password, salt, opsLimit, memLimit/1024, parallelism1, keyLength32)——即 Argon2id 算法、内存下限为 1024 MiB、并行度固定为 1、派生 32 字节密钥。解密侧则通过DecryptChaChaBase64Auth以 XChaCha20-Poly1305decryptChaCha20poly1305V2完成认证解密见 cli/internal/crypto/crypto.go#L94-L109。使用 Ente CLI 自动备份Automated backups使用 Ente CLI 可自动化备份 Auth 代码用ente account add添加账号第一步将应用名指定为auth后续 CLI 会询问导出代码的写入路径使用以下命令修改导出目录ente account update --app auth --email email --dir path使用 CLI 解密导出文件下载最新版 Ente CLI 后执行./ente auth decrypt export_file output_file完整命令定义为ente auth decrypt [input] [output]支持-p, --password指定解密密码不指定则交互输入参见 ente_auth_decrypt 命令文档。解密逻辑即上文所述的DecryptExportcli/cmd/authenticator.go 中的命令入口会调用 cli/pkg/authenticator/decrypt.go输出文件内容为换行分隔的otpauth://totp/...明文可直接用于其他验证器。本地备份Local backupsEnte Auth 支持持续性的设备端本地备份即使离线也能保护代码。该功能会在设备上自动创建加密备份。工作原理每日自动备份启用后每次打开应用时每天生成一份本地备份密码保护所有本地备份使用你设置的密码加密。务必妥善保管该密码——Ente 无法为你找回它自定义备份位置可选择设备上存储备份的目录备份保留策略应用最多保留最近 5 份备份并自动删除更早的备份。设置本地备份打开Settings Data Local backup启用Automatic backups自动备份设置备份密码最少 8 个字符选择备份存放文件夹。手动备份可随时点击Create backup now按钮触发手动备份适合在批量修改代码前执行。离线模式下的恢复路径如果你使用 Ente Auth 的无备份模式Use without backups代码仅存储在本机、不会同步到 Ente也无法从 Ente 服务器恢复。此时加密导出与本地备份是官方支持的恢复路径——设备迁移和系统备份都不能视为离线代码的备份方案因为本地保险库的密钥受设备安全存储OS keychain / keyring / credential store保护该密钥在设备迁移后可能不可用详见 offline-mode 文档。因此离线用户应在重置凭据、重装系统、换机或还原系统备份之前先创建加密导出或本地备份确认自己记得备份密码并将备份/导出文件存放在变更后仍可访问的独立位置。同时注意应用锁App lock不是恢复密码它只保护应用界面不会重新加密存储的 Auth 数据。导出数据的使用方式Ente Authenticator 应用可直接导入代码路径为Settings - Data - Import Codes - Ente Encrypted exportEnte CLI 解密按上文执行ente auth decrypt将加密导出还原为明文otpauth://totp/列表。迁移最佳实践清单综合各迁移文档index 及 authy、microsoft-authenticator、steam、import、export推荐遵循以下安全准则迁移前确认版本核对 Ente Auth 版本Steam 代码需 auth-v3.0.3验证全部账号后再删旧数据任何导入方法都不保证 100% 覆盖务必确认所有账号导入成功后才删除旧验证器中的数据妥善保管恢复码对重要账号保留恢复码或其他登录方式加密文件不外泄明文 TXT/JSON 含未加密 TOTP 密钥迁移后立即删除离线用户优先使用加密导出与本地备份并将其存放在设备变更后仍可访问的位置。【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考