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 denganrestore_backup_ssh
diatur keTrue
.
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-rsa format , 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_ssh dan 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.