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 setelah menginstal ekstensi masuk Microsoft Entra, jalankan ulang ekstensi masuk Microsoft Entra untuk mengaktifkan kembali masuk Microsoft Entra untuk VM Anda.

Catatan

Coba bantuan VM untuk diagnostik yang lebih cepat. Kami menyarankan agar Anda menjalankan VM assist untuk Windows atau VM assist untuk Linux. Alat diagnostik berbasis skrip ini membantu Anda mengidentifikasi masalah umum yang memengaruhi Agen Tamu Azure VM dan kesehatan VM secara keseluruhan.

Jika Anda mengalami masalah performa dengan komputer virtual, sebelum menghubungi dukungan, jalankan alat-alat ini.

Prasyarat

Distribusi Linux yang didukung

Publisher Distribusi x64 ARM64
Komunitas Linux Alma Alma Linux 8.x+, 9.x+ 8.x+, 9.x+
Kreativitas Debian 10+ 11.x+
Kinvolk Flatcar Linux 3374.2.x+ 3374.2.x+
Microsoft Azure Linux 2.x 2.x
Proyek openSUSE openSUSE 12.3+ Tidak didukung
Oracle Oracle Linux 6.4+, 7.x+, 8.x+ Tidak didukung
Red Hat Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+, 9.x+, 10.x+ 8.6+, 9.0+, 10.x+
CIQ Rocky Linux 9.x+ 9.x+
SUSE SLES 12.x+, 15.x+ 15.x SP4+
Canonical Ubuntu (rilis LTS) 18.04+, 20.04+, 22.04+, 24.04+ 20.04+, 22.04+, 24.04+

Petunjuk

  • VMAccess dirancang untuk mendapatkan kembali akses ke VM mengingat akses hilang. Berdasarkan prinsip ini, diberikan 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, change, 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. Ini berubah ChallengeResponseAuthentication menjadi no dan PasswordAuthentication menjadi yes. Untuk mengembalikan konfigurasi SSH asli yang dicadangkan, jalankan VMAccess dengan restore_backup_ssh disetel 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 tanggal
penerbit Microsoft.OSTCExtensions string
jenis VMAccessForLinux string
typeHandlerVersion 1.5 int (integer)

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.
perbaiki_disk Boolean Apakah memeriksa disk (opsional) atau tidak. Hanya satu di antara check_disk dan repair_disk yang dapat diatur ke true.
Nama Disk 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 .
atur ulang 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.
hapus_pengguna string Nama pengguna yang akan dihapus. Tidak dapat digunakan dengan reset_ssh, , restore_backup_sshdan password.
kedaluwarsa string Ketentuan kedaluwarsa yang akan diatur untuk akun, dalam bentuk yyyy-mm-dd. Secara default, tidak pernah.
hapus_kunci_terdahulu Boolean Apakah akan menghapus kunci SSH lama atau tidak saat menambahkan yang baru. Harus digunakan dengan ssh_key.
pemulihan_cadangan_ssh Boolean Apakah akan memulihkan file sshd_config asli yang dicadangkan 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 az vm user menggunakan Ekstensi VMAccess. Untuk menggunakan perintah ini, Anda perlu menginstal Azure CLI terbaru dan masuk ke akun Azure dengan menggunakan az sign-in.

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.

Buat pengguna dengan hak 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/Virtual Machine Scale Sets

Anda juga dapat menggunakan perintah az vm extension set dan 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.

Lokasi 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-<versi terbaru>/config/* Konfigurasi dan file biner untuk Ekstensi VM VMAccess.

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

Pesan kesalahan

Kesalahan Deskripsi
Penyediaan ekstensi VM enablevmaccess telah kehabisan waktu. Provisi ekstensi telah memakan waktu terlalu lama untuk diselesaikan. Ekstensi tidak melaporkan pesan. Informasi selengkapnya tentang pemecahan masalah tersedia di https://aka.ms/vmextensionlinuxtroubleshoot. Pesan kesalahan menunjukkan bahwa penyediaan ekstensi VM 'enablevmaccess' telah kehabisan waktu karena terlalu lama untuk diselesaikan. Selain itu, ekstensi tidak memberikan pesan status apa pun selama proses. Untuk mengatasi masalah ini, pertimbangkan untuk memeriksa performa VM dan kondisi jaringan, dan coba lagi operasi provisi. Untuk informasi selengkapnya, lihat Memecahkan masalah ekstensi VM.
VM telah melaporkan kegagalan saat memproses ekstensi 'enablevmaccess' (penerbit 'Microsoft.OSTCExtensions' dan ketik 'VMAccessForLinux'). Pesan kesalahan: 'Aktifkan gagal: Tidak ada kata sandi atau ssh_key yang ditentukan.'. Informasi selengkapnya tentang pemecahan masalah tersedia di https://aka.ms/vmextensionlinuxtroubleshoot . Pesan kesalahan menunjukkan bahwa VM gagal memproses ekstensi 'enablevmaccess' karena tidak ada kata sandi atau kunci SSH yang ditentukan. Kesalahan ini dikaitkan dengan penerbit 'Microsoft.OSTCExtensions' dan tipe 'VMAccessForLinux'. Untuk mengatasi masalah ini, pastikan bahwa kata sandi atau kunci SSH disediakan selama konfigurasi ekstensi.

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.