您可以通过 安全密钥 或使用手机应用程序的 基于时间的一次性密码 (TOTP),在您的 npm 用户帐户上启用双重身份验证 (2FA),以防止未经授权访问您的帐户和包。

先决条件

在您在 npm 用户帐户上启用 2FA 之前,您必须

有关支持的 2FA 方法的更多信息,请参阅“关于双重身份验证”。

注意:npm 不接受短信 (手机短信) 作为 2FA 方法。

从网站配置 2FA

启用 2FA

  1. 在 npm 的“登录”页面上,输入您的帐户详细信息并点击 登录. Screenshot of npm login dialog
  2. 在页面右上角,点击您的个人资料图片,然后点击“帐户”。 Screenshot of account settings selection in user menu
  3. 在帐户设置页面上,在“双重身份验证”下,点击“启用 2FA”。

    Screenshot showing Enable 2FA button
  4. 当提示您提供当前帐户密码时,请提供密码,然后点击“确认密码以继续”。

  5. 在 2FA 方法页面上,选择您要启用的方法,然后点击“继续”。有关支持的 2FA 方法的更多信息,请参阅“关于双重身份验证”。

    Screenshot showing 2FA types
  6. 配置您选择的方法。

    • 使用安全密钥时,请为其提供名称,然后点击“添加安全密钥”。按照浏览器特定的步骤添加您的安全密钥。
    Screenshot showing security key setup
    • 以下是在 MacOS 上运行的 Microsoft Edge 的配置示例
    Screenshot showing 2FA device selection
    • 使用手机上的身份验证应用程序时,请打开应用程序并扫描双重验证页面上的二维码。输入应用程序生成的代码,然后点击“验证”。
    Screenshot showing 2FA device selection
  7. 在恢复代码页面上,将恢复代码复制到您的计算机或其他安全的位置,该位置不是您的第二因素设备。我们建议使用密码管理器。

    Screenshot showing the Recovery Code page

    恢复代码是确保您在失去对第二因素设备的访问权限时可以恢复帐户的唯一方法。每个代码只能使用一次。您可以从 2FA 设置页面查看和重新生成您的恢复代码。有关辅助帐户恢复选项,请参阅“配置帐户恢复选项”。

  8. 确认您已保存代码后,点击“返回设置”。

禁用写入操作的 2FA

查看 授权和写入 部分,了解启用此模式时需要 2FA 的不同操作的更多信息。

注意:作为推荐设置,在设置 2FA 时,写入操作的 2FA 会自动启用。以下步骤说明如何禁用它。

  1. 在 npm 的“登录”页面上,输入您的帐户详细信息并点击 登录. Screenshot of npm login dialog
  2. 在页面右上角,点击您的个人资料图片,然后点击“帐户”。 Screenshot of account settings selection in user menu
  3. 在帐户设置页面上,在“双重身份验证”下,点击“修改 2FA”。

    Screenshot showing Modify 2FA button
  4. 从“管理双重身份验证”导航到“其他选项”部分。

  5. 清除“需要双重身份验证才能进行写入操作”复选框,然后点击“更新偏好设置”。

    Screenshot showing a cleared check box to disable 2fa under Addition options

禁用 2FA

如果您启用了 2FA,则可以从帐户设置页面将其移除。

注意:如果您是强制执行 2FA 的组织的成员,则无法移除 2FA。您可以在个人资料页面上的“组织”选项卡下查看组织成员资格列表。

  1. 在 npm 的“登录”页面上,输入您的帐户详细信息并点击 登录. Screenshot of npm login dialog
  2. 在页面右上角,点击您的个人资料图片,然后点击“帐户”。 Screenshot of account settings selection in user menu
  3. 在帐户设置页面上,在“双重身份验证”下,点击“修改 2FA”。

    Screenshot showing Modify 2FA button
  4. 滚动到“管理双重身份验证”页面底部,然后点击“禁用 2FA”。

    Screenshot showing Disable 2FA button
  5. 同意浏览器中的提示。

从命令行配置 2FA

从命令行启用 2FA

虽然 WebAuthn 安全密钥可用于从 Web 和命令行进行身份验证,但只能从 Web 进行配置。从命令行启用 2FA 时,目前唯一可用的选项是使用 TOTP 手机应用程序。

注意:您在命令行上配置的设置也适用于 npm 网站上的个人资料设置。

  1. 如果您在命令行上已注销,请使用 npm login 命令登录。

  2. 在命令行上,键入 npm profile 命令以及要启用的 2FA 模式选项。

    • 要启用授权和写入操作的 2FA,请键入

      npm profile enable-2fa auth-and-writes
    • 要仅启用授权的 2FA,请键入

      npm profile enable-2fa auth-only
  3. 要将 npm 添加到您的身份验证应用程序,使用带有应用程序的设备,您可以:

    • 扫描命令行中显示的二维码。
    • 输入二维码下方显示的数字。
  4. 当提示您在命令行中添加来自身份验证器的 OTP 代码时,输入身份验证器应用程序生成的的一次性密码。

从命令行发送一次性密码

如果您已启用 2FA 身份验证和写入功能,则需要在命令行中发送 TOTP 才能使某些命令生效。为此,请在命令末尾追加 --otp=123456(其中123456 是身份验证器生成的代码)。以下是一些示例

npm publish [<tarball>|<folder>][--tag <tag>] --otp=123456
npm owner add <user > --otp=123456
npm owner rm <user> --otp=123456
npm dist-tags add <pkg>@<version> [<tag>] --otp=123456
npm access edit [<package>) --otp=123456
npm unpublish [<@scope>/]<pkg>[@<version>] --otp=123456

从命令行移除 2FA

  1. 如果您在命令行上已注销,请使用 npm login 命令登录。

  2. 在命令行中,输入以下命令

    npm profile disable-2fa
  3. 当提示时,输入您的 npm 密码

    npm password:
  4. 当提示您输入一次性密码时,输入身份验证器应用程序中的密码

    Enter one-time password from your authenticator: 123456

配置帐户恢复选项

在您的 npm 用户帐户上启用 2FA 后,我们强烈建议您将 GitHub 和/或 Twitter 帐户链接到您的 npm 用户帐户。如果您丢失了 2FA 设备和恢复代码,可以使用这些链接的帐户来验证您的身份并加快恢复 npm 帐户的速度。

  1. 在 npm 的“登录”页面上,输入您的帐户详细信息并点击 登录. Screenshot of npm login dialog
  2. 在页面右上角,点击您的个人资料图片,然后点击“帐户”。 Screenshot of account settings selection in user menu
  3. 链接您的 GitHub 帐户,请在帐户设置页面中的“链接帐户和恢复选项”下,点击链接到 GitHub

    Screenshot showing Link GitHub account button
  4. 在授权页面上,验证所有信息是否正确。然后点击授权 npm 帐户链接

  5. 链接您的 Twitter 帐户,请在帐户设置页面中的“链接帐户和恢复选项”下,点击链接到 Twitter

    Screenshot showing Link Twitter account button
  6. 在授权页面上,验证所有信息是否正确。然后点击授权应用程序

Twitter 或 GitHub 帐户现在已链接到您的 npm 帐户。要删除对任一帐户的链接,您可以点击您要从 npm 帐户中删除的帐户旁边的删除按钮。

解决 TOTP 错误

如果您输入的是看起来有效的TOTP,但您看到错误,请确保您使用的是正确的身份验证器帐户。如果您有多个身份验证器帐户,使用来自错误帐户的 TOTP 会导致错误。

此外,在禁用双因素身份验证后重置双因素身份验证时,身份验证器可能会创建具有相同名称的第二个帐户。请参阅身份验证器文档以删除旧帐户。