共用方式為


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

適用於:✔️ Linux VM

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

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

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

  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. 執行 passwd 命令來admin user建立 或 root 帳戶的新密碼:

    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 修復 命令,以建立已鏈接受影響 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. 執行 passwd 命令來admin user建立 或 root 帳戶的新密碼:

    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 意見反應社群提交產品意見反應。