使用 cloud-init 將使用者新增至 Azure 上的 Linux 虛擬機器

適用於:✔️ Linux VM ✔️ 彈性擴展集

本文會示範如何在 Azure 佈建期間,使用 cloud-init 在虛擬機器 (VM) 上或虛擬機器擴展集 (VMSS) 上新增使用者。 一旦 Azure 佈建資源,此 cloud-init 指令碼就會在初次開機時執行。 如需深入了解 cloud-init 如何以原生方式在 Azure 和支援的 Linux 散發版本中運作,請參閱 cloud-init 概觀

使用 cloud-init 將使用者新增至 VM

針對任何新的 Linux 虛擬機器,首要工作之一就是為您自己新增其他使用者,以避免使用「根」。 SSH 金鑰是提供安全性和可用性的最佳做法。 此 cloud-init 指令碼會將金鑰新增至 ~/.ssh/authorized_keys 檔案。

若要將使用者新增至 Linux 虛擬機器,請在目前的殼層中建立名為 cloud_init_add_user.txt 的檔案,然後貼上下列設定。 針對此案例,在 Cloud Shell 中 (而不是本機電腦上) 建立該檔案。 您可以使用任何您想要的編輯器。 請確定已正確複製整個 cloud-init 檔案,特別是第一行。 您需要提供您自己的公開金鑰 (例如 ~/.ssh/id_rsa.pub 的內容),以作為 ssh-authorized-keys: 的值 - 這裡已將其縮減以簡化範例。

#cloud-config
users:
  - default
  - name: myadminuser
    groups: sudo
    shell: /bin/bash
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    ssh-authorized-keys:
      - ssh-rsa AAAAB3<snip>

注意

#cloud-config 檔包含 - default 參數。 這會將使用者附加至佈建期間建立的現有管理使用者。 如果您建立的使用者不含 - default 參數 - 由 Azure 平台建立的自動產生管理使用者就會遭到覆寫。

部署此映像前,您必須使用 az group create 命令建立資源群組。 Azure 資源群組是在其中部署與管理 Azure 資源的邏輯容器。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組。

az group create --name myResourceGroup --location eastus

現在,請使用 az vm create 建立 VM 並以 --custom-data cloud_init_add_user.txt 指定 cloud-init 檔案,如下所示:

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_add_user.txt \
  --generate-ssh-keys

注意

請據以取代 myResourceGroupvmNameimageCIURN 值。 確認已選擇 Cloud-init 的映像。

以 SSH 連線到顯示於由上述命令所產生之輸出中的 VM 公用 IP 位址。 輸入您自己的 userpublicIpAddress,如下所示:

ssh <user>@<publicIpAddress>

若要確認已將您的使用者新增至 VM 與指定的群組,請檢視 /etc/group 檔案的內容,如下所示:

sudo cat /etc/group

下列範例輸出顯示來自 cloud_init_add_user.txt 檔案的使用者已新增至 VM 與適當的群組:

root:x:0:
<snip />
sudo:x:27:myadminuser
<snip />
myadminuser:x:1000:

下一步

如需其他設定變更的 cloud-init 範例,請參閱下列文件: