ملحق VMAccess ل Linux

تنبيه

تشير هذه المقالة إلى CentOS، وهو توزيع Linux يقترب من حالة نهاية العمر الافتراضي (EOL). يرجى مراعاة استخدامك والتخطيط وفقا لذلك. لمزيد من المعلومات، راجع إرشادات نهاية العمر الافتراضي CentOS.

يتم استخدام ملحق VMAccess لإدارة المستخدمين الإداريين وتكوين SSH والتحقق من الأقراص أو إصلاحها على أجهزة Azure Linux الظاهرية. يتكامل الملحق مع قوالب Azure Resource Manager. يمكن أيضا استدعاؤه باستخدام Azure CLI وAzure PowerShell ومدخل Azure وواجهة برمجة تطبيقات REST للأجهزة الظاهرية Azure.

توضح هذه المقالة كيفية تشغيل ملحق VMAccess من Azure CLI ومن خلال قالب Azure Resource Manager. توفر هذه المقالة أيضاً خطوات استكشاف الأخطاء وإصلاحها لأنظمة Linux.

إشعار

إذا كنت تستخدم ملحق VMAccess لإعادة تعيين كلمة مرور الجهاز الظاهري بعد تثبيت ملحق Microsoft Entra Login، أعد تشغيل ملحق Microsoft Entra Login لإعادة تمكين Microsoft Entra Login لجهازك الظاهري.

المتطلبات الأساسية

توزيعات لينكس المدعومة

Linux Distro 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+ غير معتمد
Oracle Linux 6.4+، 7.x+، 8.x+ غير معتمد
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+

تلميحات

  • تم تصميم VMAccess لاستعادة الوصول إلى جهاز ظاهري نظرا لفقدان الوصول. بناء على هذا المبدأ، فإنه يمنح إذن sudo للحساب المحدد في حقل اسم المستخدم. إذا كنت لا ترغب في أن يحصل المستخدم على أذونات sudo، فسجل الدخول إلى الجهاز الظاهري واستخدم الأدوات المضمنة (على سبيل المثال، usermod، chage، وما إلى ذلك) لإدارة المستخدمين غير المميزين.
  • يمكنك تطبيق إصدار واحد فقط من الملحق على جهاز ظاهري. لتشغيل إجراء ثان، قم بتحديث الملحق الموجود بتكوين جديد.
  • أثناء تحديث المستخدم، يقوم VMAccess بتغيير sshd_config الملف ويأخذ نسخة احتياطية منه مسبقا. لاستعادة تكوين SSH الأصلي الذي تم نسخه احتياطيا، قم بتشغيل VMAccess مع restore_backup_ssh تعيين إلى True.

مخطط الملحق

يتضمن تكوين ملحق VMAccess إعدادات اسم المستخدم وكلمات المرور ومفاتيح SSH وما إلى ذلك. يمكنك تخزين هذه المعلومات في ملفات التكوين، أو تحديدها في سطر الأوامر، أو تضمينها في قالب Azure Resource Manager (ARM). يحتوي مخطط JSON التالي على جميع الخصائص المتوفرة للاستخدام في الإعدادات العامة والمحمية.

{
  "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
    } 
  }
}

قيم Property

الاسم القيمة / المثال نوع البيانات
apiVersion 2023-09-01 date
publisher Microsoft.OSTCExtensions سلسلة
النوع VMAccessForLinux سلسلة
typeHandlerVersion 1.5 العدد الصحيح

قيم خاصية الإعدادات

الاسم نوع البيانات ‏‏الوصف
check_disk boolean ما إذا كان يجب التحقق من القرص أم لا (اختياري). يمكن تعيين واحد فقط بين check_disk و repair_disk إلى صحيح.
repair_disk boolean ما إذا كان يجب التحقق من القرص أم لا (اختياري). يمكن تعيين واحد فقط بين check_disk و repair_disk إلى صحيح.
disk_name سلسلة اسم القرص المراد إصلاحه (مطلوب عندما repair_disk يكون صحيحا).
اسم المستخدم سلسلة اسم المستخدم المراد إدارته (مطلوب لجميع الإجراءات على حساب مستخدم).
كلمة المرور سلسلة كلمة المرور المراد تعيينها لحساب المستخدم.
ssh_key سلسلة المفتاح العام SSH لإضافته لحساب المستخدم. يمكن أن يكون مفتاح SSH بتنسيق ssh-rsaأو ssh-ed25519أو .pem .
reset_ssh boolean ما إذا كان يجب إعادة تعيين SSH أم لا. إذا true، فإنه يستبدل ملف sshd_config بملف مورد داخلي يتوافق مع تكوين SSH الافتراضي لهذا توزيعة.
remove_user سلسلة اسم المستخدم المراد إزالته. لا يمكن استخدامها مع reset_sshو restore_backup_sshو password.
انتهاء الصلاحية سلسلة انتهاء الصلاحية لتعيين إلى للحساب، في شكل yyyy-mm-dd. الإعدادات الافتراضية إلى أبدا.
remove_prior_keys boolean ما إذا كنت تريد إزالة مفاتيح SSH القديمة أم لا عند إضافة مفاتيح جديدة. يجب استخدامه مع ssh_key.
restore_backup_ssh boolean ما إذا كنت تريد استعادة sshd_config النسخة الاحتياطية الأصلية أم لا.

توزيع قالب

يمكن نشر Azure VM Extensions باستخدام قوالب Azure Resource Manager (ARM). يمكن استخدام مخطط JSON المفصل في القسم السابق في قالب ARM لتشغيل ملحق VMAccess أثناء نشر القالب. يمكنك العثور على نموذج قالب يتضمن ملحق VMAccess على GitHub.

يجب أن يكون تكوين JSON لملحق الجهاز الظاهري متداخلاً داخل جزء مورد الجهاز الظاهري من القالب، وتحديدًا عنصر "resources": [] لقالب الجهاز الظاهري وفي حالة تعيين مقياس الجهاز الظاهري ضمن العنصر "virtualMachineProfile":"extensionProfile":{"extensions" :[].

توزيع Azure CLI

استخدام أوامر مستخدم Azure CLI VM

تستخدم أوامر CLI التالية ضمن مستخدم az vm ملحق VMAccess. لاستخدام هذه الأوامر، تحتاج إلى تثبيت أحدث Azure CLI وتسجيل الدخول إلى حساب Azure باستخدام az login.

تحديث مفتاح SSH

يقوم المثال التالي بتحديث المفتاح SSH للمستخدم azureUser على الجهاز الظاهري المسمى myVM:

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

إشعار

يقوم az vm user update الأمر بإلحاق نص المفتاح العام الجديد بالملف ~/.ssh/authorized_keys للمستخدم المسؤول على الجهاز الظاهري. لا يحل هذا الأمر محل أي مفاتيح SSH موجودة أو يزيلها. لا يزيل هذا الأمر المفاتيح السابقة التي تم تعيينها في وقت التوزيع أو التحديثات اللاحقة باستخدام ملحق VMAccess.

إعادة تعيين كلمة المرور

يقوم المثال التالي بإعادة تعيين كلمة المرور للمستخدم azureUser على الجهاز الظاهري المسمى myVM:

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

إعادة تشغيل SSH

المثال التالي يعيد تشغيل SSH الوهمي ويعيد ضبط تكوين SSH على القيم الافتراضية على جهاز ظاهري مسمى myVM:

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

إشعار

يستبدل az vm user reset-ssh الأمر ملف sshd_config بملف تكوين افتراضي من دليل الموارد الداخلية. لا يستعيد هذا الأمر تكوين SSH الأصلي الموجود على الجهاز الظاهري.

إنشاء مستخدم administrative/sudo

ينشئ المثال التالي مستخدما باسم myNewUser بأذونات sudo. يستخدم الحساب مفتاح SSH للمصادقة على الجهاز الظاهري المسمى myVM. يساعدك هذا الأسلوب على استعادة الوصول إلى جهاز ظاهري عند فقدان بيانات الاعتماد الحالية أو نسيانها. وكممارسة أفضل، يجب أن تكون الحسابات ذات أذونات sudo محدودة.

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

حذف مستخدم

المثال التالي يحذف مستخدم اسمه myNewUser على VM myVM المسمى:

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

استخدام أوامر ملحق Azure CLI VM/VMSS

يمكنك أيضا استخدام مجموعة ملحقات az vm وaz vmss extension set لتشغيل ملحق VMAccess مع التكوين المحدد.

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 تقبل المعلمات و --protected-settings أيضا مسارات ملفات JSON. على سبيل المثال، لتحديث المفتاح العام SSH للمستخدم، قم بإنشاء ملف JSON باسم update_ssh_key.json وإضافة إعدادات بالتنسيق التالي. استبدل القيم الموجودة داخل الملف بالمعلومات الخاصة بك:

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

قم بتشغيل ملحق VMAccess من خلال الأمر التالي:

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

يمكن استخدام Azure PowerShell لنشر ملحق VMAccess إلى جهاز ظاهري موجود أو مجموعة مقياس الجهاز الظاهري. يمكنك نشر الملحق إلى جهاز ظاهري عن طريق تشغيل:

$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

يمكنك أيضا توفير إعدادات الملحق وتعديلها باستخدام السلاسل:

$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

للنشر إلى مجموعة مقياس الجهاز الظاهري، قم بتشغيل الأمر التالي:

$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

استكشاف الأخطاء وإصلاحها والدعم

توجد سجلات ملحق VMAccess محليا على الجهاز الظاهري وهي مفيدة للغاية عندما يتعلق الأمر باستكشاف الأخطاء وإصلاحها.

‏‏الموقع ‏‏الوصف
/var/log/waagent.log يحتوي على سجلات من عامل Linux ويظهر عند حدوث تحديث للملحق. يمكننا التحقق منه للتأكد من تشغيل الملحق.
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* ينتج ملحق VMAccess سجلات، والتي يمكن العثور عليها هنا. يحتوي الدليل على المكان الذي يمكنك فيه العثور على CommandExecution.log كل أمر يتم تنفيذه مع نتيجته، جنبا إلى جنب مع extension.log، والذي يحتوي على سجلات فردية لكل تنفيذ.
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-أحدث< إصدار>/تكوين/* التكوين والثنائيات ل VMAccess VM Extension.

يمكنك أيضا استرداد حالة تنفيذ ملحق VMAccess، جنبا إلى جنب مع الملحقات الأخرى على جهاز ظاهري معين، عن طريق تشغيل الأمر التالي:

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

لمزيد من المساعدة، يمكنك الاتصال بخبراء Azure في دعم مجتمع Azure. بدلاً من ذلك، يمكنك تقديم حدث دعم Azure. انتقل إلى Azure support وحدد Get support. لمزيد من المعلومات حول دعم Azure، اقرأ الأسئلة المتداولة حول خطط دعم Azure.

الخطوات التالية

لمشاهدة التعليمات البرمجية والإصدارات الحالية والمزيد من الوثائق، راجع VMAccess Linux - GitHub.