Bagikan melalui


Ekstensi VMAccess untuk Linux

Ekstensi VMAccess digunakan untuk mengelola pengguna administratif, mengonfigurasi SSH, dan memeriksa atau memperbaiki disk pada komputer virtual Azure Linux. Ekstensi terintegrasi dengan templat Azure Resource Manager. Ini juga dapat dipanggil menggunakan Azure CLI, Azure PowerShell, portal Azure, dan REST API Azure Virtual Machines.

Artikel ini menjelaskan cara menjalankan Ekstensi VMAccess dari Azure CLI dan melalui templat Azure Resource Manager. Artikel ini juga memberikan langkah-langkah pemecahan masalah untuk sistem Linux.

Catatan

Jika Anda menggunakan ekstensi VMAccess untuk mengatur ulang kata sandi VM anda setelah menginstal ekstensi Microsoft Entra Login, jalankan ulang ekstensi Microsoft Entra Login untuk mengaktifkan kembali Microsoft Entra Login untuk VM Anda.

Prasyarat

Distribusi Linux yang didukung

Linux Distro x64 ARM64
Alma Linux 9.x+ 9.x+
Debian 10+ 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ Tidak Didukung
Oracle Linux 6.4+, 7.x+, 8.x+ Tidak Didukung
Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+ 8.6+, 9.0+
Rocky Linux 9.x+ 9.x+
SLES 12.x+, 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

Tips

  • VMAccess dirancang untuk mendapatkan kembali akses ke VM mengingat akses hilang. Berdasarkan prinsip ini, ini memberikan izin sudo ke akun yang ditentukan dalam bidang nama pengguna. Jika Anda tidak ingin pengguna mendapatkan izin sudo, masuk ke VM dan gunakan alat bawaan (misalnya, usermod, chage, dll.) untuk mengelola pengguna yang tidak memiliki hak istimewa.
  • Anda hanya dapat memiliki satu versi ekstensi yang diterapkan ke VM. Untuk menjalankan tindakan kedua, perbarui ekstensi yang ada dengan konfigurasi baru.
  • Selama pembaruan pengguna, VMAccess mengubah sshd_config file dan mengambil cadangannya sebelumnya. Untuk memulihkan konfigurasi SSH yang dicadangkan asli, jalankan VMAccess dengan restore_backup_ssh diatur ke True.

Skema ekstensi

Konfigurasi Ekstensi VMAccess mencakup pengaturan untuk nama pengguna, kata sandi, kunci SSH, dll. Anda dapat menyimpan informasi ini dalam file konfigurasi, menentukannya di baris perintah, atau menyertakannya dalam templat Azure Resource Manager (ARM). Skema JSON berikut berisi semua properti yang tersedia untuk digunakan dalam pengaturan publik dan terlindungi.

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "<name>",
  "apiVersion": "2023-09-01",
  "location": "<location>",
  "dependsOn": [
          "[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
  ],
  "properties": {
    "publisher": "Microsoft.OSTCExtensions",
    "type": "VMAccessForLinux",
    "typeHandlerVersion": "1.5",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "check_disk": true,
      "repair_disk": false,
      "disk_name": "<disk-name>",
    },
    "protectedSettings": {
      "username": "<username>",
      "password": "<password>",
      "ssh_key": "<ssh-key>",
      "reset_ssh": false,
      "remove_user": "<username>",
      "expiration": "<expiration>",
      "remove_prior_keys": false,
      "restore_backup_ssh": true
    } 
  }
}

Nilai properti

Nama Nilai / Contoh Jenis Data
apiVersion 2023-09-01 date
penerbit Microsoft.OSTCExtensions string
jenis VMAccessForLinux string
typeHandlerVersion 1.5 int

Pengaturan nilai properti

Nama Jenis Data Deskripsi
check_disk Boolean Apakah memeriksa disk (opsional) atau tidak. Hanya satu di antara check_disk dan repair_disk yang dapat diatur ke true.
repair_disk Boolean Apakah memeriksa disk (opsional) atau tidak. Hanya satu di antara check_disk dan repair_disk yang dapat diatur ke true.
disk_name string Nama disk yang akan diperbaiki (diperlukan ketika repair_disk benar).
Nama pengguna string Nama pengguna yang akan dikelola (diperlukan untuk semua tindakan pada akun pengguna).
kata sandi string Kata sandi yang akan diatur untuk akun pengguna.
ssh_key string Kunci publik SSH yang akan ditambahkan untuk akun pengguna. Kunci SSH dapat dalam ssh-rsaformat , ssh-ed25519, atau .pem .
reset_ssh Boolean Apakah akan mereset SSH atau tidak. Jika true, ini mengganti file sshd_config dengan file sumber daya internal yang sesuai dengan konfigurasi SSH default untuk distro tersebut.
remove_user string Nama pengguna yang akan dihapus. Tidak dapat digunakan dengan reset_ssh, , restore_backup_sshdan password.
kedaluwarsa string Kedaluwarsa untuk diatur ke untuk akun, dalam bentuk yyyy-mm-dd. Default untuk tidak pernah.
remove_prior_keys Boolean Apakah akan menghapus kunci SSH lama atau tidak saat menambahkan yang baru. Harus digunakan dengan ssh_key.
restore_backup_ssh Boolean Apakah memulihkan sshd_config yang dicadangkan asli atau tidak.

Penyebaran templat

Ekstensi Azure VM dapat disebarkan dengan templat Azure Resource Manager (ARM). Skema JSON yang dirinci di bagian sebelumnya dapat digunakan dalam templat ARM untuk menjalankan Ekstensi VMAccess selama penyebaran templat. Anda dapat menemukan templat sampel yang menyertakan ekstensi VMAccess di GitHub.

Konfigurasi JSON untuk ekstensi mesin virtual harus ditumpuk di dalam fragmen sumber daya mesin virtual dari templat, khususnya objek "resources": [] untuk templat mesin virtual dan untuk skala mesin virtual yang ditetapkan di bawah objek "virtualMachineProfile":"extensionProfile":{"extensions" :[].

Penyebaran Azure CLI

Menggunakan perintah pengguna Azure CLI VM

Perintah CLI berikut di bawah pengguna az vm menggunakan Ekstensi VMAccess. Untuk menggunakan perintah ini, Anda perlu menginstal Azure CLI terbaru dan masuk ke akun Azure dengan menggunakan az login.

Memperbarui kunci SSH

Contoh berikut memperbarui kunci SSH untuk pengguna azureUser pada VM bernama myVM :

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username azureUser \
  --ssh-key-value ~/.ssh/id_rsa.pub

Catatan

Perintah az vm user update menambahkan teks kunci publik baru ke ~/.ssh/authorized_keys file untuk pengguna admin di VM. Perintah ini tidak menggantikan atau menghapus kunci SSH yang ada. Perintah ini tidak menghapus kunci sebelumnya yang ditetapkan pada waktu penyebaran atau pembaruan berikutnya dengan menggunakan Ekstensi VMAccess.

Atur ulang kata sandi

Contoh berikut mengatur ulang kata sandi untuk pengguna azureUser pada VM bernama myVM:

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username azureUser \
  --password myNewPassword

Memulai ulang SSH

Contoh berikut memulai ulang daemon SSH dan mengatur ulang konfigurasi SSH ke nilai default pada VM bernama myVM:

az vm user reset-ssh \
  --resource-group myResourceGroup \
  --name myVM

Catatan

Perintah az vm user reset-ssh mengganti file sshd_config dengan file konfigurasi default dari direktori sumber daya internal. Perintah ini tidak memulihkan konfigurasi SSH asli yang ditemukan di komputer virtual.

Membuat pengguna administratif/sudo

Contoh berikut membuat pengguna bernama myNewUser dengan izin sudo. Akun ini menggunakan kunci SSH untuk autentikasi pada VM bernama myVM. Metode ini membantu Anda mendapatkan kembali akses ke VM ketika kredensial saat ini hilang atau terlupakan. Untuk praktik terbaik, akun dengan izin sudo harus dibatasi.

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser \
  --ssh-key-value ~/.ssh/id_rsa.pub

Menghapus pengguna

Contoh berikut menghapus pengguna bernama myNewUser pada VM bernama myVM:

az vm user delete \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser

Menggunakan perintah ekstensi Azure CLI VM/VMSS

Anda juga dapat menggunakan set ekstensi az vm dan perintah az vmss extension set untuk menjalankan Ekstensi VMAccess dengan konfigurasi yang ditentukan.

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name VMAccessForLinux \
  --publisher Microsoft.OSTCExtensions \
  --version 1.5 \
  --settings '{"check_disk":true}'
  --protected-settings '{"username":"user1","password":"userPassword"}'

Parameter --settings dan --protected-settings juga menerima jalur file JSON. Misalnya, untuk memperbarui kunci publik SSH pengguna, buat file JSON bernama update_ssh_key.json dan tambahkan pengaturan dalam format berikut. Ganti nilai dalam file dengan informasi Anda sendiri:

{
  "username":"azureuser",
  "ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}

Jalankan Ekstensi VMAccess melalui perintah berikut:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name VMAccessForLinux \
  --publisher Microsoft.OSTCExtensions \
  --version 1.5 \
  --protected-settings update_ssh_key.json

Penyebaran Azure PowerShell

Azure PowerShell dapat digunakan untuk menyebarkan Ekstensi VMAccess ke komputer virtual atau set skala komputer virtual yang ada. Anda dapat menyebarkan ekstensi ke VM dengan menjalankan:

$username = "<username>"
$sshKey = "<cert-contents>"

$settings = @{"check_disk" = $true};
$protectedSettings = @{"username" = $username; "ssh_key" = $sshKey};

Set-AzVMExtension -ResourceGroupName "<resource-group>" `
    -VMName "<vm-name>" `
    -Location "<location>" `
    -Publisher "Microsoft.OSTCExtensions" `
    -ExtensionType "VMAccessForLinux" `
    -Name "VMAccessForLinux" `
    -TypeHandlerVersion "1.5" `
    -Settings $settings `
    -ProtectedSettings $protectedSettings

Anda juga dapat menyediakan dan mengubah pengaturan ekstensi dengan menggunakan string:

$username = "<username>"
$sshKey = "<cert-contents>"

$settingsString = '{"check_disk":true}';
$protectedSettingsString = '{"username":"' + $username + '","ssh_key":"' + $sshKey + '"}';

Set-AzVMExtension -ResourceGroupName "<resource-group>" `
    -VMName "<vm-name>" `
    -Location "<location>" `
    -Publisher "Microsoft.OSTCExtensions" `
    -ExtensionType "VMAccessForLinux" `
    -Name "VMAccessForLinux" `
    -TypeHandlerVersion "1.5" `
    -SettingString $settingsString `
    -ProtectedSettingString $protectedSettingsString

Untuk menyebarkan ke set skala komputer virtual, jalankan perintah berikut:

$resourceGroupName = "<resource-group>"
$vmssName = "<vmss-name>"

$protectedSettings = @{
  "username" = "azureUser"
  "password" = "userPassword"
}

$publicSettings = @{
  "repair_disk" = $true
  "disk_name" = "<disk_name>"
}

$vmss = Get-AzVmss `
            -ResourceGroupName $resourceGroupName `
            -VMScaleSetName $vmssName

Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
    -Name "<extension-name>" `
    -Publisher "Microsoft.OSTCExtensions" `
    -Type "VMAccessForLinux" `
    -TypeHandlerVersion "1.5"" `
    -AutoUpgradeMinorVersion $true `
    -Setting $publicSettings `
    -ProtectedSetting $protectedSettings

Update-AzVmss `
    -ResourceGroupName $resourceGroupName `
    -Name $vmssName `
    -VirtualMachineScaleSet $vmss

Pemecahan masalah dan dukungan

Log ekstensi VMAccess ada secara lokal di VM dan paling informatif dalam hal pemecahan masalah.

Location Deskripsi
/var/log/waagent.log Berisi log dari Agen Linux dan menunjukkan kapan pembaruan pada ekstensi terjadi. Kita dapat memeriksanya untuk memastikan ekstensi berjalan.
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* Ekstensi VMAccess menghasilkan log, yang dapat ditemukan di sini. Direktori berisi CommandExecution.log tempat Anda dapat menemukan setiap perintah yang dijalankan bersama dengan hasilnya, bersama dengan extension.log, yang berisi log individual untuk setiap eksekusi.
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-most< recent version>/config/* Konfigurasi dan biner untuk Ekstensi VMAccess VM.

Anda juga dapat mengambil status eksekusi Ekstensi VMAccess, bersama dengan ekstensi lain pada VM tertentu, dengan menjalankan perintah berikut:

az vm extension list --resource-group myResourceGroup --vm-name myVM -o table

Untuk bantuan selengkapnya, Anda dapat menghubungi pakar Azure di Dukungan Komunitas Azure. Atau, Anda dapat mengajukan insiden dukungan Azure. Buka Dukungan Azure dan pilih Dapatkan dukungan. Untuk informasi selengkapnya tentang Dukungan Azure, baca FAQ paket dukungan Azure.

Langkah berikutnya

Untuk melihat kode, versi saat ini, dan dokumentasi lainnya, lihat VMAccess Linux - GitHub.