如何将 KeePassXC 双因素身份验证 TOPT 代码生成从一台 Linux 机器迁移到另一台?
这个答案似乎表明复制数据库就足够了,而且开箱即用。我理解得对吗?我似乎无法在KeePassXC 用户指南。
我尝试过的方法
2024.01.06 我尝试在两台 Ubuntu Mate 22.04 LTS 机器之间迁移 KeePassXC 数据库(版本 2.7.6),方法是复制在 ~/.config/ 中找到的 Passwords.kdbx,然后使用save database as
KeePassXCopen database
的数据库菜单中的。
两种方法都无法正确迁移 2FA 设置。目标机器上的 KeePassXC 无法生成 Github 可以接受的 TOPT 代码。Github 会接受原始机器上 KeePassXC 生成的 TOTP 代码,但不会接受目标机器上 KeePassXC 生成的代码(“双因素身份验证失败”)。
我可以确认的是,克隆后,相应机器上的 KeePassXC 似乎会生成不同的TOTP 代码,虽然这似乎是预料之中的,因为我生成它们的时间间隔为 1-2 秒?
问题:
- 这次失败令人惊讶吗?通过数据库克隆进行的 KeePassXC 迁移通常会自动进行吗?
- 我是否误解了 TOTP+KeePassXC+Github 的一些基本知识?如果是这样,是否有更详细的分步指南来指导我想要实现的目标?
答案1
这次失败令人惊讶吗?通过数据库克隆进行的 KeePassXC 迁移通常会自动进行吗?
这次失败非常令人惊讶,因为 TOTP 没有任何特定于数据库的东西(与 HOTP 不同)。
所有 TOTP 代码仅基于存储在条目的额外属性(永不改变)和系统时间(以 30 秒为增量)中的“秘密”;没有其他隐藏数据或状态会影响输出。
我可以确认的一件事是,克隆之后,各个机器上的 KeePassXC 似乎会生成不同的 TOTP 代码,尽管这似乎是意料之中的,因为我生成它们的间隔是 1-2 秒?
通常不会。默认情况下,TOTP 将系统时间调整为 30 秒精度,因此您应该看到最多的时间是完全相同的代码 – 除非您恰好跨越了 30 秒的界限;但如果发生这种情况,请再做一次,并且代码应该经常相同。
如果没有发生这种情况,请调整您的系统时钟并确保时区正确(以便当 KeePassX 向操作系统询问“当前 UTC 时间”时,它确实会获得 UTC 时间,而不是错误标记为 UTC 的本地时间)。
例如,其中一台机器可能只是几分钟就关闭了。确保两台机器都可以通过 NTP 同步时间。也可能是它有本地时间显然正确,但设置了错误的时区,因此与 UTC 时间的偏移量是错误的。