Linux için VMAccess Uzantısı
VMAccess Uzantısı, yönetici kullanıcıları yönetmek, SSH yapılandırmak ve Azure Linux sanal makinelerinde diskleri denetlemek veya onarmak için kullanılır. Uzantı, Azure Resource Manager şablonlarıyla tümleşir. Azure CLI, Azure PowerShell, Azure portalı ve Azure Sanal Makineler REST API kullanılarak da çağrılabilir.
Bu makalede, Azure CLI'dan ve bir Azure Resource Manager şablonu aracılığıyla VMAccess Uzantısı'nın nasıl çalıştırıldığı açıklanır. Bu makalede Linux sistemleri için sorun giderme adımları da sağlanır.
Not
Microsoft Entra Login uzantısını yükledikten sonra VM'nizin parolasını sıfırlamak için VMAccess uzantısını kullanırsanız, MICROSOFT Entra Login uzantısını yeniden çalıştırarak VM'niz için Microsoft Entra Login'i yeniden etkinleştirin.
Önkoşullar
Desteklenen Linux dağıtımları
Linux Dağıtımı | 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+ | Desteklenmiyor |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Desteklenmiyor |
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+ |
İpuçları
- VMAccess, erişimin kaybedildiği bir VM'ye yeniden erişim kazanmak için tasarlanmıştır. Bu ilkeye bağlı olarak, kullanıcı adı alanında belirtilen hesaba sudo izni verir. Bir kullanıcının sudo izinleri kazanmasını istemiyorsanız, VM'de oturum açın ve ayrıcalıksız kullanıcıları yönetmek için yerleşik araçları (örneğin, usermod, chage vb.) kullanın.
- Bir VM'ye uzantının yalnızca bir sürümünü uygulayabilirsiniz. İkinci bir eylem çalıştırmak için mevcut uzantıyı yeni bir yapılandırmayla güncelleştirin.
- Kullanıcı güncelleştirmesi sırasında VMAccess dosyayı değiştirir
sshd_config
ve önceden bir yedeğini alır. vePasswordAuthentication
olarakno
yes
değişirChallengeResponseAuthentication
. Özgün yedeklenen SSH yapılandırmasını geri yüklemek için vmAccess'i olarakTrue
ayarlayın.restore_backup_ssh
Uzantı şeması
VMAccess Uzantısı yapılandırması kullanıcı adı, parolalar, SSH anahtarları vb. ayarlarını içerir. Bu bilgileri yapılandırma dosyalarında depolayabilir, komut satırında belirtebilir veya bir Azure Resource Manager (ARM) şablonuna ekleyebilirsiniz. Aşağıdaki JSON şeması, genel ve korumalı ayarlarda kullanılabilen tüm özellikleri içerir.
{
"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
}
}
}
Özellik değerleri
Veri Akışı Adı | Değer / Örnek | Veri Türü |
---|---|---|
apiVersion | 2023-09-01 | tarih |
yayınevi | Microsoft.OSTCExtensions | Dize |
Tür | VMAccessForLinux | Dize |
typeHandlerVersion | 1.5 | int |
Ayarlar özellik değerleri
Veri Akışı Adı | Veri Türü | Açıklama |
---|---|---|
check_disk | boolean | Diskin denetlenip denetlenmeyeceği (isteğe bağlı). ile repair_disk arasında check_disk yalnızca bir tane true olarak ayarlanabilir. |
repair_disk | boolean | Diskin denetlenip denetlenmeyeceği (isteğe bağlı). ile repair_disk arasında check_disk yalnızca bir tane true olarak ayarlanabilir. |
disk_name | Dize | Onaracak diskin adı (doğru olduğunda repair_disk gereklidir). |
username | Dize | Yönetecek kullanıcının adı (bir kullanıcı hesabındaki tüm eylemler için gereklidir). |
password | Dize | Kullanıcı hesabı için ayarlanacağı parola. |
ssh_key | Dize | Kullanıcı hesabı için eklenecek SSH ortak anahtarı. SSH anahtarı , ssh-ed25519 veya .pem biçiminde olabilirssh-rsa . |
reset_ssh | boolean | SSH'nin sıfırlanıp sıfırlanmaması. ise true , sshd_config dosyasını bu dağıtım için varsayılan SSH yapılandırmasına karşılık gelen bir iç kaynak dosyasıyla değiştirir. |
remove_user | Dize | Kaldırılacak kullanıcının adı. , restore_backup_ssh ve password ile reset_ssh kullanılamaz. |
süre sonu | Dize | Hesap için olarak ayarlanacağı süre sonu, biçiminde yyyy-mm-dd . Varsayılan değer hiçbir zaman olarak ayarlı değil. |
remove_prior_keys | boolean | Yenisini eklerken eski SSH anahtarlarının kaldırılıp kaldırılmayacağı. ile ssh_key kullanılmalıdır. |
restore_backup_ssh | boolean | Özgün yedeklenen sshd_config geri yüklenip geri yüklenmeyeceği. |
Şablon dağıtımı
Azure VM Uzantıları, Azure Resource Manager (ARM) şablonlarıyla dağıtılabilir. Önceki bölümde ayrıntılarıyla belirtilen JSON şeması, bir ARM şablonunda, şablonun dağıtımı sırasında VMAccess Uzantısını çalıştırmak için kullanılabilir. GitHub'da VMAccess uzantısını içeren örnek bir şablon bulabilirsiniz.
Bir sanal makine uzantısının JSON yapılandırması, şablonun sanal makine kaynak parçasının içine, özellikle "resources": []
sanal makine şablonuna ve nesnenin altındaki bir sanal makine ölçek kümesine ait nesnenin içine "virtualMachineProfile":"extensionProfile":{"extensions" :[]
yerleştirilmelidir.
Azure CLI dağıtımı
Azure CLI VM kullanıcı komutlarını kullanma
az vm user altındaki aşağıdaki CLI komutları VMAccess Uzantısını kullanır. Bu komutları kullanmak için en son Azure CLI'yi yüklemeniz ve az login kullanarak bir Azure hesabında oturum açmanız gerekir.
SSH anahtarını güncelleştirme
Aşağıdaki örnek, adlı myVM
VM'de kullanıcı azureUser
için SSH anahtarını güncelleştirir:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Not
Komutu, az vm user update
vm'de yönetici kullanıcı için dosyaya ~/.ssh/authorized_keys
yeni ortak anahtar metnini ekler. Bu komut mevcut SSH anahtarlarını değiştirmez veya kaldırmaz. Bu komut, VMAccess Uzantısını kullanarak dağıtım zamanında ayarlanan önceki anahtarları veya sonraki güncelleştirmeleri kaldırmaz.
Parola sıfırlama
Aşağıdaki örnek adlı myVM
VM'de kullanıcının azureUser
parolasını sıfırlar:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--password myNewPassword
SSH'yi yeniden başlatma
Aşağıdaki örnek, SSH daemon'unu yeniden başlatır ve SSH yapılandırmasını adlı myVM
bir VM'de varsayılan değerlere sıfırlar:
az vm user reset-ssh \
--resource-group myResourceGroup \
--name myVM
Not
komutu, az vm user reset-ssh
sshd_config dosyasını iç kaynaklar dizininden varsayılan bir yapılandırma dosyasıyla değiştirir. Bu komut, sanal makinede bulunan özgün SSH yapılandırmasını geri yüklemez.
Yönetici/sudo kullanıcısı oluşturma
Aşağıdaki örnek, sudo izinleriyle adlı myNewUser
bir kullanıcı oluşturur. Hesap, adlı myVM
VM'de kimlik doğrulaması için bir SSH anahtarı kullanır. Bu yöntem, geçerli kimlik bilgileri kaybolduğunda veya unutulduğunda vm'ye yeniden erişim kazanmanıza yardımcı olur. En iyi uygulama olarak, sudo izinlerine sahip hesaplar sınırlı olmalıdır.
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Kullanıcı silme
Aşağıdaki örnek adlı VM'de adlı myNewUser
myVM
bir kullanıcıyı siler:
az vm user delete \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser
Azure CLI VM/VMSS uzantısı komutlarını kullanma
VmAccess Uzantısını belirtilen yapılandırmayla çalıştırmak için az vm extension set ve az vmss extension set komutlarını da kullanabilirsiniz.
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"}'
--settings
ve --protected-settings
parametreleri JSON dosya yollarını da kabul eder. Örneğin, bir kullanıcının SSH ortak anahtarını güncelleştirmek için adlı update_ssh_key.json
bir JSON dosyası oluşturun ve ayarları aşağıdaki biçimde ekleyin. Dosya içindeki değerleri kendi bilgilerinizle değiştirin:
{
"username":"azureuser",
"ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}
VMAccess Uzantısı'nı aşağıdaki komutla çalıştırın:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.5 \
--protected-settings update_ssh_key.json
Azure PowerShell dağıtımı
Azure PowerShell, VMAccess Uzantısı'nı mevcut bir sanal makineye veya sanal makine ölçek kümesine dağıtmak için kullanılabilir. Uzantıyı çalıştırarak bir VM'ye dağıtabilirsiniz:
$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
Ayrıca, dizeleri kullanarak uzantı ayarlarını sağlayabilir ve değiştirebilirsiniz:
$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
Bir sanal makine ölçek kümesine dağıtmak için aşağıdaki komutu çalıştırın:
$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
Sorun giderme ve destek
VMAccess uzantısı günlükleri VM'de yerel olarak bulunur ve sorun giderme konusunda en bilgilendiricidir.
Konum | Açıklama |
---|---|
/var/log/waagent.log | Linux Aracısı'ndan gelen günlükleri içerir ve uzantıya yönelik bir güncelleştirmenin ne zaman gerçekleştiğini gösterir. Uzantının çalıştığından emin olmak için bunu denetleyebiliriz. |
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* | VMAccess Uzantısı, burada bulunabilecek günlükler oluşturur. Dizin, her yürütme için tek tek günlükleri içeren ile birlikte, sonucuyla extension.log birlikte yürütülen her komutu bulabileceğiniz yeri içerirCommandExecution.log . |
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-en< son sürüm>/config/* | VMAccess VM Uzantısı için yapılandırma ve ikili dosyalar. |
Ayrıca, aşağıdaki komutu çalıştırarak belirli bir VM'de diğer uzantılarla birlikte VMAccess Uzantısının yürütme durumunu da alabilirsiniz:
az vm extension list --resource-group myResourceGroup --vm-name myVM -o table
Daha fazla yardım için Azure Topluluk Desteği'ndeki Azure uzmanlarına başvurabilirsiniz. Alternatif olarak, bir Azure desteği olayı da oluşturabilirsiniz. Azure desteği gidin ve Destek al'ı seçin. Azure Desteği hakkında daha fazla bilgi için Azure desteği planları hakkında SSS bölümünü okuyun.
Sonraki adımlar
Kodu, geçerli sürümleri ve diğer belgeleri görmek için bkz . VMAccess Linux - GitHub.