Docs/ 安全/ 认证与 2FA

认证与 2FA

使用密码或 Google OAuth 登录保护你的 sh0 实例,并通过双因素认证添加额外的保护层。

登录方式

sh0 为人员提供两种登录方式,二者都会打开同一个控制台会话;程序则使用 API 密钥。

密码认证

默认方式。系统没有默认凭据:第一个账户在全新安装的设置页面上创建,其他账户均由管理员邀请。

登录交互、会话 Cookie 和双因素步骤的开发者说明见API 身份验证。

sh0 登录页面,包含邮箱和密码字段

Google OAuth

对于 sh0 Cloud 用户,Google 登录可作为登录方式使用。这使用 Google 的 OAuth 2.0 流程,通过 JWKS 进行 ID 令牌验证。

  1. 在登录页面点击 使用 Google 登录。
  2. 使用你的 Google 账户进行认证。
  3. sh0 验证 ID 令牌并创建或关联你的账户。
带有 Google 登录按钮的登录页面
Note
对于自托管实例,Google OAuth 需要配置带有 OAuth 凭据的 Google Cloud 项目。参见 设置 → 认证 输入你的 Client ID 和 Client Secret。

启用双因素认证

双因素认证(2FA)通过在常规凭据之外要求输入基于时间的一次性密码(TOTP)来增加额外的安全层。

  1. 在控制台中打开您的个人资料页面。
  2. 点击启用 2FA。
  3. 使用认证器应用(Google Authenticator、Authy、1Password 等)扫描二维码。
  4. 输入认证器应用中的 6 位验证码以完成设置验证。
  5. 将备用恢复码保存在安全的位置。
2FA 设置界面,显示二维码和验证字段

启用后,每次登录都需要在输入邮箱和密码后提供 6 位 TOTP 验证码。

Warning
如果您同时丢失了身份验证器和备用码,可以直接在服务器上恢复账户,无需登录。该命令会重置密码、关闭双因素认证并撤销所有已打开的会话:
Terminal (on the server)
sudo sh0 users reset-password [email protected] --disable-2fa
Output
Password reset for [email protected] (318a52d95557639444c765ea8de8b0f5)

Revoked 14 refresh token(s). Sessions already open are rejected on their next request -- they are not left alive until their access token expires.

不带 --password 时,会生成并打印一个随机临时密码。用它登录后,请设置新密码并重新启用双因素认证。

备用恢复码

启用 2FA 时,sh0 会生成 20 个一次性备用码,并且只存储其哈希值。若无法使用身份验证器,每个备用码可代替一次 6 位验证码。

Danger
将备用恢复码存储在安全的离线位置(密码管理器、保险柜中的打印纸)。如果丢失认证器设备,这些恢复码是你唯一的恢复方式。它们仅在 2FA 设置时显示一次。

您可以在个人资料页面通过重新生成备用码来重新生成。需用当前的 6 位验证码确认,之前的所有备用码随即失效。

更改密码

要更改密码:

  1. 打开您的个人资料页面。
  2. 前往密码部分。
  3. 输入当前密码和新密码。
  4. 确认新密码并保存。
个人设置中的更改密码表单

密码在存储前使用 Argon2id 进行哈希处理。sh0 强制要求最低密码长度为 8 个字符。

Tip
修改密码会立即注销所有其他会话:任何掌握旧密码的人都会立刻失去访问权限。

会话管理

控制台会话有效期为 24 小时,只要您持续使用控制台便会自动续期;连续 30 天未使用的会话将结束。系统没有可管理的会话列表:要结束某个账户的全部会话,请修改其密码,或在服务器上运行上述恢复命令。