你可以為你的 npm 使用者帳戶啟用兩步驟驗證 (2FA),以防止未經授權存取你的帳戶和套件,方法是使用 安全金鑰基於時間的一次性密碼 (TOTP) 從行動應用程式。

先決條件

在為你的 npm 使用者帳戶啟用 2FA 之前,你必須

有關受支援 2FA 方法的更多資訊,請參閱「關於兩步驟驗證」。

注意:npm 不接受簡訊 (簡訊到手機) 作為 2FA 方法。

從網站設定 2FA

啟用 2FA

  1. 在 npm「登入」頁面,輸入你的帳戶詳細資料,然後按一下登入npm 登入對話框的螢幕截圖
  2. 在頁面的右上角,按一下你的個人資料圖片,然後按一下帳戶使用者選單中帳戶設定選項的螢幕截圖
  3. 在帳戶設定頁面,「兩步驟驗證」下方,按一下啟用 2FA

    Screenshot showing Enable 2FA button
  4. 在提示時提供你目前的帳戶密碼,然後按一下確認密碼以繼續

  5. 在 2FA 方法頁面,選擇你想要啟用的方法,然後按一下繼續。有關受支援 2FA 方法的更多資訊,請參閱「關於兩步驟驗證」。

    Screenshot showing 2FA types
  6. 設定您選擇的 2FA 方法

    • 使用安全金鑰時,請提供其名稱並按一下新增安全金鑰。請依照瀏覽器特定步驟新增您的安全金鑰。
    Screenshot showing security key setup
    • 以下是在 MacOS 上執行 Microsoft Edge 的設定範例
    Screenshot showing 2FA device selection
    • 在手機上使用驗證器應用程式時,請開啟它並掃描兩步驟驗證頁面上的 QR 碼。輸入應用程式產生的代碼,然後按一下驗證
    Screenshot showing 2FA device selection
  7. 在復原代碼頁面上,將復原代碼複製到您的電腦或其他非第二要素裝置的安全位置。我們建議使用密碼管理員。

    Screenshot showing the Recovery Code page

    復原代碼是確保您在遺失第二要素裝置時可以復原帳戶的唯一方法。每個代碼只能使用一次。您可以從您的 2FA 設定頁面查看並重新產生您的復原代碼。有關次要帳戶復原選項,請參閱「設定帳戶復原選項」。

  8. 在確認您已儲存代碼後,按一下返回設定

停用寫入的 2FA

查看授權和寫入區段,以取得啟用此模式時需要 2FA 的不同作業的更多資訊。

注意:作為建議設定,設定 2FA 時會自動啟用寫入作業的 2FA。下列步驟說明如何停用它。

  1. 在 npm「登入」頁面,輸入你的帳戶詳細資料,然後按一下登入npm 登入對話框的螢幕截圖
  2. 在頁面的右上角,按一下你的個人資料圖片,然後按一下帳戶使用者選單中帳戶設定選項的螢幕截圖
  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「登入」頁面,輸入你的帳戶詳細資料,然後按一下登入npm 登入對話框的螢幕截圖
  2. 在頁面的右上角,按一下你的個人資料圖片,然後按一下帳戶使用者選單中帳戶設定選項的螢幕截圖
  3. 在帳戶設定頁面上的「兩步驟驗證」下方,按一下修改 2FA

    Screenshot showing Modify 2FA button
  4. 捲動到「管理雙重驗證」頁面的底部,然後按一下「停用 2FA」。

    Screenshot showing Disable 2FA button
  5. 同意瀏覽器的提示。

從命令列設定 2FA

從命令列啟用 2FA

雖然具有 WebAuthn 的安全金鑰可同時用於網頁和命令列驗證,但只能從網頁進行設定。目前,從命令列啟用 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 加入您的驗證器應用程式,請使用裝有該應用程式的裝置,您可以

    • 掃描命令列上顯示的 QR 碼。
    • 輸入 QR 碼下方顯示的數字。
  4. 當系統提示您從驗證器加入 OTP 碼時,請在命令列中輸入驗證器應用程式產生的單次密碼。

從命令列傳送一次性密碼

如果您已啟用 2FA auth-and-writes,您需要從命令列傳送 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「登入」頁面,輸入你的帳戶詳細資料,然後按一下登入npm 登入對話框的螢幕截圖
  2. 在頁面的右上角,按一下你的個人資料圖片,然後按一下帳戶使用者選單中帳戶設定選項的螢幕截圖
  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 會導致錯誤。

此外,當您在停用兩步驟驗證後重設,驗證器可能會使用相同的名稱建立第二個帳戶。請參閱驗證器文件以刪除舊帳戶。