Linux için VMAccess Uzantısı

Dikkat

Bu makalede, Kullanım Süresi Sonu (EOL) durumuna yakın bir Linux dağıtımı olan CentOS'a başvuruda bulunur. Lütfen kullanımınızı göz önünde bulundurun ve uygun şekilde planlayın. Daha fazla bilgi için bkz . CentOS Kullanım Süresi Sonu kılavuzu.

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+
CentOS 7.x+, 8.x+ 7.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. Özgün yedeklenen SSH yapılandırmasını geri yüklemek için vmAccess'i olarak Trueayarlayı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ımcı Microsoft.OSTCExtensions Dize
Tür VMAccessForLinux Dize
typeHandlerVersion 1.5 int

özellik değerlerini Ayarlar

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-ed25519veya .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_sshve passwordile reset_sshkullanı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_keykullanı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ı myVMVM'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ı myVMVM'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ı myVMbir 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ı myVMVM'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ı myNewUsermyVMbir 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.logbirlikte 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.