你可以给你的 npm 账号开启双重身份认证,用以防止未经授权的访问你的账号和包。

前提条件

在给你的 npm 账号开启 2FA 之前,你必须需要:

  • 升级你的 npm 客户端(npm client)到 5.5.1 版本或者更高。
  • 在你的移动设备或者是第二台电脑上安装用户认证程序,它将生成一次性密码(比如说 Authy 或者 Google Authenticator )。当你在使用 npm 账号的时候,请确保移动设备或者是第二台电脑是可用的。

Note:npm 并不采用 SMS( text-to-phone )这种方式作为 双重认证的方法。

在网页上配置你的 2FA

在网上开启 2FA

  1. 使用你的账号登录 npm

配置双重身份认证 - 图1

  1. 在页面的右上角,点击你的头像,然后选择 profile settings 。

配置双重身份认证 - 图2

  1. 在 profile settings 页面上,”Two-Factor Authentication”标题下,点击 Enable 2FA

配置双重身份认证 - 图3

  1. 在 2FA 的设置页面,选择你想要开启的模式。更多的相关信息,请查看”Two-factor authentication modes on npm“。

配置双重身份认证 - 图4

  1. 点击 Submit

配置双重身份认证 - 图5

  1. 在你的手机上打开你的双重认证软件,然后用你的手机扫描二维码。
  2. 输入在你手机 app 上生成的 验证码,然后点击 Verity。

配置双重身份认证 - 图6

  1. 在 recovery code 页面,拷贝 recovery code 到你的电脑上面,或者其他安全的地方。我们推荐使用密码管理工具去保存你的 recovery code。如果你不能使用你的手机登录,那么当 npm 提示你要使用 一次性密码(one-time password)的时候,你可以使用 recovery code 。
  2. 点击 Go back to settings

    image.png

在网页上移除 2FA

如果你开启了 2FA 的授权,那么你可以从你的 profile setting 页面移除 2FA 设置。

  1. 登录你的账号

image.png

  1. 在页面的右上角,点击你的 profile 图片,然后点击 profile settings 。

    image.png

  2. 在 profile settings 页面, 在 “Two-Factor Authentication” 卡片下,点击 Modify 2FA

    image.png

  3. 在 2FA 设置页面,在 “What should we protect?”卡片下,选择 “Disable” 。

    image.png

  4. 点击 submit

image.png

在命令行配置 2FA

在命令行开启 2FA

Note:你在命令行上面的设置也会作用于你npm网站的 profile setting 。

  1. 在命令行中,输入 npm profile 命令,以及你想要启用的 2FA 模式
    • 开启 2FA 的授权和写入模式,请输入:

npm profile enable-2fa auth-and-writes

  • 仅仅开启 2FA 的授权,请输入:

npm profile enable-2fa auth-only

  1. 要将 npm 添加到你的授权程序中,使用设备与程序,你可以:
    • 扫描出现在命令行上面的二维码
    • 输入二维码下方显示的数字
  2. 当提示你从 authenticator 添加 OTP code 的时候,在命令行中,你可以输入 authenticator app 提供的一次性密码。

通过命令行发送一次性密码

如果你开启了 2FA 的授权与写入模式,你将需要从命令行发送 OTP 以确保命令行的工作。接着这样做,添加 --otp=123456(这里的123456 是通过你的 authenticator 生成的)在命令的最后面。这里有一些例子:

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

通过命令行移除 2FA

  1. 在命令行中输入如下的命令

    1. npm profile disable-2fa
  2. 当出现提示的时候,输入你的 npm 密码

    1. npm password:
  3. 当提示输入一次性密码的时候,输入从 authenticator app 生成的密码

    1. Enter one-time password from your authenticator: 123456

解决 OTP 的错误

如果你输入了一个看起来似乎正确的 OTP ,但是报了错误。这个时候请确保你在使用正确的 authenticator account 。如果你有多个 authenticator account,使用了错误的账号就很有可能是导致错误的原因。

如果你输入了一个正确的 OTP,但是却报错了,检查一下,你是否在使用正确的 authenticator account 。

还有就是,当你禁用了 2FA 的之后,再去充值 2FA,那么 authenticator 可能会 创建出第二个名字相同的账号。请查看 authenticator(身份认证器) 文档去删除老的账号。