إدارة SSH للوصول الآمن إلى عقد خدمة Azure Kubernetes (AKS)
توضح هذه المقالة كيفية تكوين مفاتيح SSH (معاينة) على مجموعات AKS أو تجمعات العقد، أثناء النشر الأولي أو في وقت لاحق.
يدعم AKS خيارات التكوين التالية لإدارة مفاتيح SSH على عقد نظام المجموعة:
- إنشاء نظام مجموعة باستخدام مفاتيح SSH
- تحديث مفاتيح SSH على نظام مجموعة AKS موجود
- تعطيل خدمة SSH وتمكينها
هام
تتوفر ميزات معاينة AKS على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات AKS جزئيًا بواسطة دعم العملاء على أساس بذل أفضل الجهود. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي. لمزيد من المعلومات، يُرجي الاطلاع على مقالات الدعم الآتية:
قبل البدء
- تحتاج إلى
aks-preview
الإصدار 0.5.116 أو أحدث لاستخدام التحديث. - تحتاج إلى
aks-preview
الإصدار 1.0.0b6 أو أحدث لاستخدام Disable. - تدعم ميزة إنشاء وتحديث SSH تجمعات عقد Linux وWindows وAzure Linux على المجموعات الموجودة.
- ميزة تعطيل SSH غير مدعومة في إصدار المعاينة هذا على تجمعات العقد التي تعمل بنظام التشغيل Windows Server.
تثبيت aks-preview
امتداد Azure CLI
تثبيت ملحق aks-preview باستخدام
az extension add
الأمر .az extension add --name aks-preview
قم بتحديث إلى أحدث إصدار من الملحق باستخدام
az extension update
الأمر .az extension update --name aks-preview
تسجيل DisableSSHPreview
العلامات المميزة
لاستخدام ميزة تعطيل SSH، قم بتنفيذ الخطوات التالية للتسجيل وتمكينها في اشتراكك.
تسجيل علامة الميزة
DisableSSHPreview
باستخدامaz feature register
الأمر .az feature register --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
يستغرق الأمر بضع دقائق حتى تظهر الحالة مُسجل.
تحقق من حالة التسجيل باستخدام
az feature show
الأمر .az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
عندما تعكس الحالة Registered، قم بتحديث تسجيل موفر موارد Microsoft.ContainerService باستخدام
az provider register
الأمر .az provider register --namespace Microsoft.ContainerService
إنشاء نظام مجموعة AKS باستخدام مفاتيح SSH
استخدم الأمر az aks create لنشر نظام مجموعة AKS باستخدام مفتاح عام SSH. يمكنك إما تحديد المفتاح أو ملف المفتاح باستخدام الوسيطة --ssh-key-value
.
معلمة SSH | الوصف | القيمة الافتراضية |
---|---|---|
--generate-ssh-key |
إذا لم يكن لديك مفاتيح SSH الخاصة بك، فحدد --generate-ssh-key . يقوم Azure CLI تلقائيا بإنشاء مجموعة من مفاتيح SSH وحفظها في الدليل ~/.ssh/ الافتراضي . |
|
--ssh-key-value | مسار المفتاح العام أو محتويات المفتاح المراد تثبيتها على الأجهزة الظاهرية للعقدة للوصول إلى SSH. على سبيل المثال، ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm |
~/.ssh/id_rsa.pub |
--no-ssh-key |
إذا لم تكن بحاجة إلى مفاتيح SSH، فحدد هذه الوسيطة. ومع ذلك، يقوم AKS تلقائيا بإنشاء مجموعة من مفاتيح SSH لأن تبعية مورد Azure Virtual Machine لا تدعم ملف مفاتيح SSH فارغ. ونتيجة لذلك، لا يتم إرجاع المفاتيح ولا يمكن استخدامها ل SSH في الأجهزة الظاهرية للعقدة. يتم تجاهل المفتاح الخاص وعدم حفظه. |
إشعار
إذا لم يتم تحديد أي معلمات، فإن Azure CLI افتراضيا للإشارة إلى مفاتيح SSH المخزنة ~/.ssh/id_rsa.pub
في الملف. إذا لم يتم العثور على المفاتيح، يقوم الأمر بإرجاع الرسالة An RSA key file or key value must be supplied to SSH Key Value
.
فيما يلي أمثلة على هذا الأمر:
لإنشاء نظام مجموعة واستخدام مفاتيح SSH الافتراضية التي تم إنشاؤها:
az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
لتحديد ملف مفتاح عام SSH، قم بتضمين الوسيطة
--ssh-key-value
:az aks create --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
تحديث المفتاح العام SSH على نظام مجموعة AKS موجود
az aks update
استخدم الأمر لتحديث المفتاح العام SSH (معاينة) على نظام المجموعة. تحدث هذه العملية المفتاح على جميع تجمعات العقد. يمكنك إما تحديد مفتاح أو ملف مفتاح باستخدام الوسيطة --ssh-key-value
.
إشعار
يتم دعم تحديث مفاتيح SSH على مجموعات مقياس الجهاز الظاهري Azure مع مجموعات AKS.
فيما يلي أمثلة على هذا الأمر:
لتحديد قيمة مفتاح عام SSH جديدة، قم بتضمين الوسيطة
--ssh-key-value
:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
لتحديد ملف مفتاح عام SSH، حدده باستخدام الوسيطة
--ssh-key-value
:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
هام
بعد تحديث مفتاح SSH، لا تقوم AKS بتحديث تجمع العقدة تلقائيا. في أي وقت، يمكنك اختيار تنفيذ عملية تحديث nodepool. تسري عملية تحديث مفاتيح SSH بعد اكتمال تحديث صورة العقدة.
تعطيل نظرة عامة على SSH
لتحسين الأمان ودعم متطلبات أمان الشركة أو استراتيجيتها، تدعم AKS تعطيل SSH (معاينة) على كل من نظام المجموعة وعلى مستوى تجمع العقدة. يقدم تعطيل SSH نهجا مبسطا مقارنة بالحل الوحيد المدعوم، والذي يتطلب تكوين قواعد مجموعة أمان الشبكة على بطاقة واجهة الشبكة للشبكة الفرعية/العقدة AKS (NIC). يدعم تعطيل SSH تجمعات عقد مجموعات مقياس الجهاز الظاهري فقط.
عند تعطيل SSH في وقت إنشاء نظام المجموعة، يصبح ساري المفعول بعد إنشاء نظام المجموعة. ومع ذلك، عند تعطيل SSH على مجموعة أو تجمع عقدة موجود، لا يقوم AKS بتعطيل SSH تلقائيا. في أي وقت، يمكنك اختيار تنفيذ عملية ترقية nodepool. تسري عملية تعطيل/تمكين مفاتيح SSH بعد اكتمال تحديث صورة العقدة.
إشعار
عند تعطيل SSH على مستوى نظام المجموعة، فإنه ينطبق على جميع تجمعات العقد الموجودة. سيتم تمكين SSH بشكل افتراضي لأي تجمعات عقد تم إنشاؤها بعد هذه العملية، وستحتاج إلى تشغيل هذه الأوامر مرة أخرى لتعطيلها.
معلمة SSH | الوصف |
---|---|
disabled |
تم تعطيل خدمة SSH. |
localuser |
يتم تمكين خدمة SSH ويمكن للمستخدمين الذين لديهم مفاتيح SSH الوصول إلى العقدة بأمان. |
إشعار
تستمر عقدة تصحيح أخطاء kubectl في العمل بعد تعطيل SSH لأنها لا تعتمد على خدمة SSH.
تعطيل SSH على نشر نظام مجموعة جديد
بشكل افتراضي، تكون خدمة SSH على عقد نظام مجموعة AKS مفتوحة لجميع المستخدمين والقرون التي تعمل على نظام المجموعة. يمكنك منع الوصول المباشر إلى SSH من أي شبكة إلى عقد نظام المجموعة للمساعدة في الحد من متجه الهجوم إذا تعرضت حاوية في جراب للخطر.
az aks create
استخدم الأمر لإنشاء نظام مجموعة جديد، وقم بتضمين الوسيطة --ssh-access disabled
لتعطيل SSH (معاينة) على جميع تجمعات العقد أثناء إنشاء نظام المجموعة.
هام
بعد تعطيل خدمة SSH، لا يمكنك SSH في نظام المجموعة لتنفيذ المهام الإدارية أو لاستكشاف الأخطاء وإصلاحها.
إشعار
في نظام مجموعة تم إنشاؤه حديثا، سيؤدي تعطيل ssh إلى تكوين عقدة النظام الأولى فقط. يجب تكوين جميع تجمعات العقد الأخرى على مستوى nodepool.
az aks create --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled
بعد بضع دقائق، الأمر إكمال وإرجاع معلومات منسقة JSON حول الكتلة. يشبه المثال التالي الإخراج والنتائج المتعلقة بتعطيل SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
تعطيل SSH على مجموعة موجودة
az aks update
استخدم الأمر لتحديث مجموعة موجودة، وقم بتضمين الوسيطة --ssh-access disabled
لتعطيل SSH (معاينة) على جميع تجمعات العقد في نظام المجموعة.
az aks update --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled
بعد بضع دقائق، الأمر إكمال وإرجاع معلومات منسقة JSON حول الكتلة. يشبه المثال التالي الإخراج والنتائج المتعلقة بتعطيل SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
لكي يسري التغيير، تحتاج إلى إعادة تعيين كافة تجمعات العقد باستخدام az aks nodepool upgrade
الأمر .
az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only
هام
أثناء هذه العملية، تتم ترقية جميع مثيلات مجموعة مقياس الجهاز الظاهري وإعادة تصورها لاستخدام تكوين SSH الجديد.
تعطيل SSH لتجمع عقدة جديد
az aks nodepool add
استخدم الأمر لإضافة تجمع عقدة، وقم بتضمين الوسيطة --ssh-access disabled
لتعطيل SSH أثناء إنشاء تجمع العقدة.
az aks nodepool add --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
بعد بضع دقائق، يكمل الأمر ويعيد معلومات بتنسيق JSON حول المجموعة التي تشير إلى إنشاء mynodepool بنجاح. يشبه المثال التالي الإخراج والنتائج المتعلقة بتعطيل SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
تعطيل SSH لتجمع عقدة موجود
استخدم الوسيطة [az aks nodepool update][az-aks-nodepool-update] command with the
--ssh-access disabled" لتعطيل SSH (معاينة) على تجمع عقدة موجود.
az aks nodepool update --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
بعد بضع دقائق، يكمل الأمر ويعيد معلومات بتنسيق JSON حول المجموعة التي تشير إلى إنشاء mynodepool بنجاح. يشبه المثال التالي الإخراج والنتائج المتعلقة بتعطيل SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
لكي يسري التغيير، تحتاج إلى إعادة تعيين تجمع العقدة باستخدام az aks nodepool upgrade
الأمر .
az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only
إعادة تمكين SSH على نظام مجموعة موجود
az aks update
استخدم الأمر لتحديث مجموعة موجودة، وقم بتضمين الوسيطة --ssh-access localuser
لإعادة تمكين SSH (معاينة) على جميع تجمعات العقد في نظام المجموعة.
az aks update --resource-group myResourceGroup --name myManagedCluster --ssh-access localuser
يتم إرجاع الرسالة التالية أثناء تنفيذ العملية:
Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect."
بعد إعادة تمكين SSH، لن يتم إعادة تصور العقد تلقائيا. في أي وقت، يمكنك اختيار إجراء عملية إعادة تعيين.
هام
أثناء هذه العملية، تتم ترقية جميع مثيلات مجموعة مقياس الجهاز الظاهري وإعادة تصورها لاستخدام مفتاح SSH العام الجديد.
إعادة تمكين SSH لتجمع عقدة معين
az aks update
استخدم الأمر لتحديث تجمع عقدة معين، وقم بتضمين الوسيطة --ssh-access localuser
لإعادة تمكين SSH (معاينة) على تجمع العقدة هذا في نظام المجموعة. في المثال التالي، nodepool1 هو تجمع العقدة الهدف.
az aks nodepool update --cluster-name myManagedCluster --name nodepool1 --resource-group myResourceGroup --ssh-access localuser
يتم إرجاع الرسالة التالية عند تنفيذ العملية:
Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect.
هام
أثناء هذه العملية، تتم ترقية جميع مثيلات مجموعة مقياس الجهاز الظاهري وإعادة تصورها لاستخدام مفتاح SSH العام الجديد.
حالة خدمة SSH
قم بتنفيذ الخطوات التالية لاستخدام node-shell على عقدة واحدة وفحص حالة خدمة SSH باستخدام systemctl
.
احصل على bash shell القياسي عن طريق تشغيل أمر الأمر
kubectl node-shell <node>
.kubectl node-shell aks-nodepool1-20785627-vmss000001
systemctl
قم بتشغيل الأمر للتحقق من حالة خدمة SSH.systemctl status ssh
إذا تم تعطيل SSH، يظهر إخراج العينة التالي النتائج:
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2024-01-03 15:36:57 UTC; 20min ago
إذا تم تمكين SSH، يظهر إخراج العينة التالي النتائج:
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-01-03 15:40:20 UTC; 19min ago
الخطوات التالية
للمساعدة في استكشاف أي مشكلات في اتصال SSH بعقد مجموعاتك وإصلاحها، يمكنك عرض سجلات kubelet أو عرض سجلات العقدة الرئيسية Kubernetes.
Azure Kubernetes Service