如何在 Azure VM 上重設本機 Linux 密碼

本文提供三種方法來重設本機Linux虛擬機 (VM) 密碼。 如果使用者帳戶已過期或您想要建立新帳戶,您可以使用下列方法來建立新的本機系統管理員帳戶,並重新取得 VM 的存取權。

使用 Azure Linux 代理程式重設密碼

您可以重設密碼,而不需將OS磁碟連結至另一個 VM。 此方法需要在受影響的 VM 上安裝 Azure Linux 代理 程式。

  1. 請確定 Azure Linux 代理程式 (waagent) 服務正在受影響的 VM 上執行,且在 Azure 入口網站 中處於就緒狀態。

  2. 設定環境變數,並使用 Azure CLI 或 Azure Cloud Shell 來進行密碼重設:

    AZ_RESOURCE_GROUP="YourResourceGroupName"
    AZ_VM_NAME="VMname"
    AZ_ADMIN_USER="adminName"
    AZ_MSADMIN_PASS="newPassword"
    
    az vm user update -u $AZ_ADMIN_USER -p $AZ_MSADMIN_PASS -g $AZ_RESOURCE_GROUP -n $AZ_VM_NAME
    
  3. 嘗試存取 VM。

若要更新 SSH 金鑰,請 參閱使用 VMAccess 擴充功能搭配 Azure CLI 管理系統管理使用者 SSH

您也可以使用 Azure 入口網站 中的 [重設密碼] 功能來重設密碼或 SSH 金鑰。

如需詳細資訊,請參閱 適用於Linux的 vmaccess 擴充功能。

使用序列主控台搭配單一使用者模式重設密碼

您可以使用 序列主控台 ,透過單一使用者模式重設 admin userroot 帳戶,以進行 VM 存取。

  1. 遵循 單一使用者模式 程式來重設或新增密碼。

  2. 如果您嘗試使用 SSH 和密碼驗證登入伺服器,請確定已在 OpenSSH 伺服器上啟用密碼驗證。

    1. 執行下列命令,PasswordAuthentitcation檢查值是否設定為 yesno/etc/ssh/sshd_config在 中:

      egrep "^PasswordAuthentication" /etc/ssh/sshd_config
      
    2. 如果值 PasswordAuthentication 設定為 no,請使用文字編輯器,例如 vinano ,將值變更為 yes

  3. 執行 命令, admin user 為或 root 帳戶 passwd 建立新的密碼:

    passwd <admin_user>
    
  4. 執行下列命令,檢查 是否 SElinux 處於 enforcing 中的模式 /etc/sysconfig/selinux

    cat /etc/sysconfig/selinux
    
  5. 如果 SElinux 處於 enforcing 模式,請確定 SElinux 允許使用 命令進行 passwd 檔案變更。 密碼變更之後,您可以執行下列命令來重新標記檔案系統,以加速載入變更。

    touch /.autorelabel
    
  6. 執行下列命令來重新啟動 VM:

    /usr/sbin/reboot -f
    
  7. 嘗試存取 VM。

使用修復 VM 重設密碼

此方法已使用 支援的Linux發行版和版本進行測試。

注意事項

如果您遇到影響 Azure 網路虛擬設備的問題,此方法不適用於您的情況。 相反地,您必須連絡網路虛擬設備的廠商,以取得如何安全地重設密碼的指示。

您可以執行 vm repair 命令來建立已鏈接受影響 VM OS 磁碟復本的修復 VM。 然後,透過 Chroot 環境在修復 VM 上掛接 OS 檔案系統的複本。

注意事項

或者,使用 Azure 入口網站 手動建立救援 VM。 如需詳細資訊,請參閱使用 Azure 入口網站 將 OS 磁碟連結至復原 VM,以針對 Linux VM 進行疑難解答

  1. 執行下列 az vm repair create 命令來建立 OS 磁碟的複本。 然後,磁碟會自動連結至復原 VM。

    AZ_RESOURCE_GROUP="YourResourceGroupName"
    AZ_VM_NAME="VMname"
    AZ_ADMIN_USER="userName"
    AZ_MSADMIN_PASS="newPassword"
    
    az vm repair create -g $AZ_RESOURCE_GROUP -n $AZ_VM_NAME --repair-username $AZ_ADMIN_USER --repair-password "$AZ_MSADMIN_PASS" --verbose
    
  2. 登入修復 VM 並 針對 Chroot 環境進行疑難解答

  3. 如果您嘗試使用 SSH 和密碼驗證登入伺服器,請確定已在 OpenSSH 伺服器上啟用密碼驗證。

    1. 執行下列命令,PasswordAuthentitcation檢查值是否設定為 yesno/etc/ssh/sshd_config在 中:

      egrep "^PasswordAuthentication" /etc/ssh/sshd_config
      
    2. 如果值 PasswordAuthentication 設定為 no,請使用文字編輯器,例如 vinano ,將值變更為 yes

  4. 執行 命令, admin user 為或 root 帳戶 passwd 建立新的密碼:

    passwd <admin_user>
    
  5. 執行下列命令,檢查 是否 SElinux 處於 enforcing 中的模式 /etc/sysconfig/selinux

    cat /etc/sysconfig/selinux
    
  6. 如果 SElinux 處於 enforcing 模式,請確定 SElinux 允許使用 命令進行 passwd 檔案變更。 密碼變更之後,您可以執行下列命令來重新標記檔案系統,以加速載入變更。

    touch /.autorelabel
    
  7. 結束 Chroot 環境

  8. 使用下列命令交換 OS 磁碟,將 OS 磁碟重新掛接至受影響的 VM:

    az vm repair restore -g $AZ_RESOURCE_GROUP -n $AZ_VM_NAME --verbose
    
  9. 嘗試存取 VM。

後續步驟

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群