ktpass

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012

為 Azure Active Directory 網域服務 (AD DS) 中的主機或服務設定伺服器主體名稱,並產生包含服務共用秘密金鑰的 .keytab 檔案。 .keytab 檔案是根據 Kerberos 驗證通訊協定的 Massachusetts Institute of Technology (麻省理工學院,MIT) 實作。 ktpass 命令列工具可讓支援 Kerberos 驗證的非 Windows 服務使用 Kerberos 金鑰發佈中心 (KDC) 服務提供的互通性功能。

語法

ktpass
[/out <filename>]
[/princ <principalname>]
[/mapuser <useraccount>]
[/mapop {add|set}] [{-|+}desonly] [/in <filename>]
[/pass {password|*|{-|+}rndpass}]
[/minpass]
[/maxpass]
[/crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All}]
[/itercount]
[/ptype {KRB5_NT_PRINCIPAL|KRB5_NT_SRV_INST|KRB5_NT_SRV_HST}]
[/kvno <keyversionnum>]
[/answer {-|+}]
[/target]
[/rawsalt] [{-|+}dumpsalt] [{-|+}setupn] [{-|+}setpass <password>]  [/?|/h|/help]

參數

參數 描述
/out <filename> 指定要產生的 Kerberos 版本 5 .keytab 檔案名稱。 注意:您要將這個 .keytab 檔案傳輸至未執行 Windows 作業系統的電腦,並於隨後使用其取代或合併現有 .keytab 檔案 /Etc/Krb5.keytab
/princ <principalname> 指定使用 host/computer.contoso.com@CONTOSO.COM 形式的主體名稱。 警告:這個參數會區分大小寫。
/mapuser <useraccount> 將 Kerberos 主體名稱 (由 princ 參數所指定) 對應至指定的網域帳戶。
/mapop {add|set} 指定如何設定對應屬性。
  • Add - 新增指定本機使用者名稱的值。 這是預設值。
  • Set - 為指定的本機使用者名稱設定僅限資料加密標準 (DES) 加密的值。
{-|+}desonly 根據預設,系統會設定僅限 DES 加密。
  • + 會設定僅限 DES 加密的帳戶。
  • - 會在僅限 DES 加密的帳戶上放開限制。 重要事項:根據預設,Windows 並不支援 DES。
/in <filename> 指定要從未執行 Windows 作業系統之主機電腦讀取的 .keytab 檔案。
/pass {password|*|{-|+}rndpass} 指定由 princ 參數指定之主體使用者名稱的密碼。 使用 * 提示輸入密碼。
/minpass 將隨機密碼的長度下限設為 15 個字元。
/maxpass 將隨機密碼的長度上限設為 256 個字元。
/crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} 指定在 keytab 檔案中產生的金鑰:
  • DES-CBC-CRC - 用於相容性。
  • DES-CBC-MD5 - 更貼近 MIT 實作,並用於相容性。
  • RC4-HMAC-NT - 使用 128 位元加密。
  • AES256-SHA1 - 使用 AES256-CTS-HMAC-SHA1-96 加密。
  • AES128-SHA1 - 使用 AES128-CTS-HMAC-SHA1-96 加密。
  • All - 表示可以使用所有受支援的密碼編譯類型。

注意:由於預設設定會以較舊的 MIT 版本為依據,因此,您應該一律使用 /crypto 參數。

/itercount 指定用於 AES 加密的反覆運算計數。 根據預設,非 AES 加密的 itercount 會遭到忽略,並將 AES 加密設為 4,096。
/ptype {KRB5_NT_PRINCIPAL|KRB5_NT_SRV_INST|KRB5_NT_SRV_HST} 指定主體類型。
  • KRB5_NT_PRINCIPAL - 一般主體類型 (建議)。
  • KRB5_NT_SRV_INST - 使用者服務執行個體。
  • KRB5_NT_SRV_HST - 主機服務執行個體。
/kvno <keyversionnum> 指定金鑰版本號碼。 預設值是 1。
/answer {-|+} 設定背景回答模式:
  • - 會使用 NO 來自動回答重設密碼提示。
  • + 會使用 YES 來自動回答重設密碼提示。
/target 設定要使用的網域控制站。 根據預設,網域控制站可根據主體名稱來偵測。 如果網域控制站名稱無法解析,系統將會顯示對話方塊,以要求有效的網域控制站。
/rawsalt 強制規定 ktpass 在產生金鑰時應使用 rawsalt 演算法。 這是選擇性參數。
{-|+}dumpsalt 這個參數的輸出會顯示用來產生金鑰的 MIT Salt 演算法。
{-|+}setupn 除了服務主體名稱 (SPN) 之外,還會設定使用者主體名稱 (UPN)。 根據預設,.keytab 檔案中的兩者都會遭到設定。
{-|+}setpass <password> 在提供時設定使用者的密碼。 如果使用 rndpass,就會改為產生隨機密碼。
/? 顯示這個命令的說明。

備註

  • 在未執行 Windows 作業系統之系統上執行的服務,可使用 AD DS 中的服務執行個體帳戶加以設定。 這樣一來,任何 Kerberos 用戶端都能透過使用 Windows KDC 的方式,對未執行 Windows 作業系統的服務進行驗證。

  • /princ 參數不會由 ktpass 評估,且會在提供時使用。 產生 Keytab 檔案時,並不會檢查參數是否完全符合 userPrincipalName 屬性值的大小寫。 如果大小寫沒有完全相符,則使用 Keytab 檔案且區分大小寫的 Kerberos 發佈可能會發生問題,甚至在預先驗證期間以失敗坐收。 請檢查並從 LDifDE 匯出檔案擷取正確的 userPrincipalName 屬性值。 例如:

    ldifde /f keytab_user.ldf /d CN=Keytab User,OU=UserAccounts,DC=contoso,DC=corp,DC=microsoft,DC=com /p base /l samaccountname,userprincipalname
    

範例

若要為未執行 Windows 作業系統的主機電腦建立 Kerberos .keytab 檔案,您必須將主體對應至帳戶,並設定主機主體密碼。

  1. 使用 Active Directory 使用者和密碼 嵌入式管理單元,為未執行 Windows 作業系統之電腦上的服務建立使用者帳戶。 舉例來說,請建立名為 User1 的帳戶。

  2. 輸入下列內容,使用 ktpass 命令設定使用者帳戶的身分識別對應:

    ktpass /princ host/User1.contoso.com@CONTOSO.COM /mapuser User1 /pass MyPas$w0rd /out machine.keytab /crypto all /ptype KRB5_NT_PRINCIPAL /mapop set
    

    注意

    您無法將多個服務執行個體對應至相同的使用者帳戶。

  3. 合併 .keytab 檔案與未執行 Windows 作業系統之主機電腦上的 /Etc/Krb5.keytab 檔案。