Heroku 账户可以部署代码,保存着满是 API 密钥和数据库凭据的配置变量(config vars),还会产生账单——这正是攻击者要找的东西。所以 Salesforce 要求每位 Heroku 用户开启多重身份验证。Salesforce Authenticator 是满足要求的一种方式;任何身份验证器应用生成的基于时间的验证码是另一种,而且不需要手机信号。
为 Heroku 添加身份验证器应用
新的 Heroku 账户在创建时就会被要求开启多重身份验证——届时设置流程会自动打开,你在那里选择一次性密码生成器即可。如果你的团队通过单点登录登录 Heroku,多重身份验证要在那个身份提供商处设置,这些步骤不适用。
- 在电脑上登录 Heroku Dashboard。
- 打开「Account Settings」(账户设置)。
- 选择「Setup Multi-Factor Authentication」(设置多重身份验证)——如果已经开启了某种验证方式,则选择「Manage Multi-Factor Authentication」(管理多重身份验证)。
- 点击「Add One Time Password Generator」(添加一次性密码生成器)。
- Heroku 会显示一个二维码。让它留在屏幕上,按下文所述添加到扩展中——然后输入扩展中的验证码,点击「Connect」(连接)。
将 Heroku 添加到 Authenticator
- 从 Chrome Web Store 安装身份验证器 2FA,并把它固定到工具栏,这样点一下图标就能打开。
- 保持 Heroku 显示二维码的页面不要关闭。点击 Authenticator 图标,然后依次选择「添加账户」→「二维码」→「从屏幕扫描QR码」。
- 账户会出现在列表中,并显示一个每 30 秒变化一次的六位数验证码。你可以随意重命名——名称只给你自己看。
- 回到 Heroku,把当前验证码填入确认框。如果它快要过期,就等下一个。
- Heroku 会提示双重验证已开启。之后每次登录都会要求输入验证码——点击扩展图标复制即可。
没有二维码,或者扫不出来?在 Heroku 的设置页面找到手动输入密钥的选项,复制密钥,然后在扩展中通过「添加账户」→「手动输入」→「密钥」添加。
免费安装身份验证器 2FA(Chrome 扩展)生成 10 个 Heroku 恢复代码
恢复代码本身就是一种验证方式:在同一个多重身份验证页面选择「Add Recovery Codes」(添加恢复代码),Heroku 会显示 10 个一次性代码。把它们保存在这台电脑以外的地方——每个代码在使用前一直有效,你也可以随时生成新的一组。用它登录时,依次点击「Didn’t receive a notification?」(没有收到通知?)→「Choose Another Verification Method」(选择其他验证方式)→「Recovery Codes」(恢复代码)。
验证码不被接受?
几乎总是电脑时钟的问题。验证码是根据当前时间计算的,时钟差一分钟,生成的验证码看起来没问题,却会被拒绝。请在系统设置中开启自动设置日期和时间——Windows、macOS 和 Linux 的详细步骤。
如果时钟没问题,就检查密钥本身:把它粘贴到TOTP 验证码生成器中,对比生成的验证码与扩展中的是否一致。如果不一致,说明密钥复制错了——请重新添加账户。
常见问题
- Heroku 需要 Salesforce Authenticator 吗?
- 不需要。Salesforce Authenticator 发送推送通知,但 Heroku 同样接受一次性密码生成器——任何能生成标准的基于时间的验证码的应用。Heroku 列举了 Google Authenticator、Microsoft Authenticator 和 Authy;Authenticator 扩展的工作方式相同,还能直接读取 Dashboard 上的二维码。
- 开启多重身份验证后,如何登录 Heroku CLI?
- 运行 heroku login:它会打开浏览器,你在那里登录 Dashboard,输入扩展中的验证码。在终端中要求输入密码的 --interactive 选项,无法与多重身份验证一起使用。
- 如果我无法使用身份验证器了怎么办?
- 用一个恢复代码登录,然后重新设置身份验证器。在 Heroku Enterprise Account 中,管理员可以在账户的 Access 标签页上用「Send MFA Recovery Token」(发送 MFA 恢复令牌)给你发送一个临时验证码。否则请联系 Heroku 支持,它可能会要求提供额外信息以确认是你本人。
- 为什么 Heroku 提示我的验证码不对?
- 通常是电脑时钟偏差了一分钟或更多。开启自动设置日期和时间,然后试试下一个验证码。如果还是不行,从扩展中删除该账户,在 Manage Multi-Factor Authentication 中删除一次性密码生成器,然后重新添加。
验证码就在登录页旁边,一键即得
Authenticator 把你的 2FA 验证码保存在浏览器里,只存放在你自己的设备上——可免费使用、开源,无需注册账户,也不需要手机。内置本地备份和可选的密码保护。
免费安装身份验证器 2FA(Chrome 扩展)