最近幫客戶在 Azure 雲端服務架設一台 Linux 主機,當所有服務設定完成後,請客戶登入接著進行後續設定調整。結果在開帳號給客戶的過程中,卻不小心把 sudoers
的格式寫壞,導致連我自己都無法 sudo
成管理者,整台機器完全無法管理,當場傻眼!本篇文章要來分享一個急救良藥,在 Azure 上管理 Linux VM 有絕招,任何錯誤的設定都可以輕鬆解決!
先來看看發生錯誤的畫面,我可以成功登入自己的帳號,但無法變身為 root
權限:
所有在 Azure 上執行的 Linux VM 都會安裝一個 VM 代理程式,這個代理程式會以最高權限身分執行著,所以我們可以透過 Azure 提供的 執行命令 (Run command) 功能,在 Linux VM 中執行任意指令碼,而且是以 root
身分執行。如此一來,我們就可以用來快速診斷和修復虛擬機器存取和網路問題,並使虛擬機器恢復正常狀態。
我後來找到 使用執行命令在 Linux VM 中執行殼層指令碼 這篇文章,講解的十分清楚,以下我大概示範幾種執行方法。
- 透過 Azure 入口網站操作
- 透過 Azure CLI 進行操作
透過 az vm run-command 命令,也可以做到相同的動作,執行任意命令。
az vm run-command invoke -g myResourceGroup -n myVm --command-id RunShellScript --scripts "sudo apt-get update && sudo apt-get install -y nginx"
相關連結