直接从计算机(无移动设备)生成 2FA 的 TOTP

s.k*_*s.k 12 software-recommendation two-factor-authentication 22.04

在 Ubuntu 22.04.2 上,我很高兴听到一种本地且安全的方法来生成TOTP代码,以便在任何需要 2FA 的给定应用程序中使用。

您知道直接在 Ubuntu 计算机上执行此操作的开源方法吗?

我能找到的所有教程都是基于“移动应用程序”方式(例如使用Google Authenticator),我无法使用它,因为我除了笔记本电脑之外没有任何其他移动设备。

use*_*186 8

KeepassXC

这是一个 Linux 本机开源密码管理器,可从 Ubuntu 存储库获取。如果您想要最新的,还有 PPA。

从 Ubuntu 商店或终端安装 keepassXC。打开终端并输入:

sudo apt install keepassxc
Run Code Online (Sandbox Code Playgroud)
  1. 安装后,您必须创建一个数据库来保存密码。
  2. 然后您必须使用用户名和密码创建一个新条目。它不允许在此步骤创建 TOPT。
  3. 最后,选择新创建的条目(用户名和密码)后,您可以使用顶部的菜单并选择条目> TOTP... > 设置 TOTP。

安全

KeepassXC 数据库默认受密码保护。也就是说,要使用数据库中存储的密码(和 TOTP),您必须打开 KeepassXC 应用程序并输入密码才能打开数据库。除了密码之外,您还可以选择使用文件(存储在 USB 驱动器中)来提高安全性。也就是说,如果 USB 驱动器中不存在特定文件或者未插入特定 USB 驱动器,则任何人都无法打开 KeepassXC 数据库并访问 TOTP 或密码。

警告

您可能必须在提供此类 2FA 的网页上重新开始设置 TOTP。例如,您可能需要暂时在 Google 帐户中禁用 2FA,然后重新设置才能获取新的二维码。设置 2FA 后,大多数网页不会显示密钥或相应的二维码。如果您当前在手机上使用身份验证应用程序,则当您再次在网页中进行 2FA 设置时,该应用程序生成的 TOTP 号码将变得过时。

从好的方面来说, KeeppassXC 在设置后可以为每个 TOTP 生成 QR 码。也就是说,您可以使用手机的身份验证应用程序扫描 KeepassXC 生成的二维码来更新它。

浏览器扩展

您可能想要使用 KeepassXC 的 Chrome 或 Firefox 扩展。这样您只需单击几下即可复制并粘贴用户 ID、密码和 TOTP(如果可用)。

奥蒂

Authy 是另一个适用于手机、平板电脑和台式机的身份验证应用程序。甚至还有Snap 版本

与 KeeppassXC 不同,Authy 不管理密码。它仅用于生成 TOTP。从好的方面来说,如果您在手机或平板电脑上使用 Authy,您可以在包括桌面在内的所有设备之间保持 TOTP 同步。您必须创建一个 Authy 帐户才能使每台设备中的 Authy 应用程序保持同步。

希望这可以帮助


小智 6

如果您只需要生成代码而不管理它们(例如,您不介意将 TOTP 秘密存储在其他地方并在每次需要生成代码时提供它),您可以使用它是oathtool的一部分。要从 Base32 编码的机密生成 6 位代码,您可以使用以下命令:oath-toolkit

oathtool --base32 --totp "SECRET" -d 6
Run Code Online (Sandbox Code Playgroud)

默认时间步长为 30 秒,默认开始时间为 1970-01-01 00:00:00 UTC。有关更多使用信息,请参阅联机帮助页。有关来源,请参阅debain 存储库Jammy 来源

如果您不想使用外部包或工具,则相关 RFC 中描述了生成 TOTP 所需的算法,您可以使用这些算法来编写自己的 shell 脚本:

  • RFC 2104:HMAC:用于消息身份验证的密钥散列
  • RFC 4226:HOTP:一种基于 HMAC 的一次性密码算法
  • RFC 6238:TOTP:基于时间的一次性密码算法