你可以给你的 npm 账号开启双重身份认证,用以防止未经授权的访问你的账号和包。
前提条件
在给你的 npm 账号开启 2FA 之前,你必须需要:
- 升级你的 npm 客户端(npm client)到 5.5.1 版本或者更高。
- 在你的移动设备或者是第二台电脑上安装用户认证程序,它将生成一次性密码(比如说 Authy 或者 Google Authenticator )。当你在使用 npm 账号的时候,请确保移动设备或者是第二台电脑是可用的。
Note:npm 并不采用 SMS( text-to-phone )这种方式作为 双重认证的方法。
在网页上配置你的 2FA
在网上开启 2FA
- 使用你的账号登录 npm
- 在页面的右上角,点击你的头像,然后选择 profile settings 。
- 在 profile settings 页面上,”Two-Factor Authentication”标题下,点击 Enable 2FA 。
- 在 2FA 的设置页面,选择你想要开启的模式。更多的相关信息,请查看”Two-factor authentication modes on npm“。
- 点击 Submit
- 在你的手机上打开你的双重认证软件,然后用你的手机扫描二维码。
- 输入在你手机 app 上生成的 验证码,然后点击 Verity。
- 在 recovery code 页面,拷贝 recovery code 到你的电脑上面,或者其他安全的地方。我们推荐使用密码管理工具去保存你的 recovery code。如果你不能使用你的手机登录,那么当 npm 提示你要使用 一次性密码(one-time password)的时候,你可以使用 recovery code 。
点击 Go back to settings
在网页上移除 2FA
如果你开启了 2FA 的授权,那么你可以从你的 profile setting 页面移除 2FA 设置。
- 登录你的账号
在页面的右上角,点击你的 profile 图片,然后点击 profile settings 。
在 profile settings 页面, 在 “Two-Factor Authentication” 卡片下,点击 Modify 2FA 。
在 2FA 设置页面,在 “What should we protect?”卡片下,选择 “Disable” 。
点击 submit
在命令行配置 2FA
在命令行开启 2FA
Note:你在命令行上面的设置也会作用于你npm网站的 profile setting 。
- 在命令行中,输入
npm profile
命令,以及你想要启用的 2FA 模式- 开启 2FA 的授权和写入模式,请输入:
npm profile enable-2fa auth-and-writes
- 仅仅开启 2FA 的授权,请输入:
npm profile enable-2fa auth-only
- 要将 npm 添加到你的授权程序中,使用设备与程序,你可以:
- 扫描出现在命令行上面的二维码
- 输入二维码下方显示的数字
- 当提示你从 authenticator 添加 OTP code 的时候,在命令行中,你可以输入 authenticator app 提供的一次性密码。
通过命令行发送一次性密码
如果你开启了 2FA 的授权与写入模式,你将需要从命令行发送 OTP 以确保命令行的工作。接着这样做,添加 --otp=123456
(这里的123456 是通过你的 authenticator 生成的)在命令的最后面。这里有一些例子:
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
在命令行中输入如下的命令
npm profile disable-2fa
当出现提示的时候,输入你的 npm 密码
npm password:
当提示输入一次性密码的时候,输入从 authenticator app 生成的密码
Enter one-time password from your authenticator: 123456
解决 OTP 的错误
如果你输入了一个看起来似乎正确的 OTP ,但是报了错误。这个时候请确保你在使用正确的 authenticator account 。如果你有多个 authenticator account,使用了错误的账号就很有可能是导致错误的原因。
如果你输入了一个正确的 OTP,但是却报错了,检查一下,你是否在使用正确的 authenticator account 。
还有就是,当你禁用了 2FA 的之后,再去充值 2FA,那么 authenticator 可能会 创建出第二个名字相同的账号。请查看 authenticator(身份认证器) 文档去删除老的账号。