- الرئيسية
- الشبكات متعددة السحابات
- Customer Edge diagnostics
- Reaching a Customer Edge
- SSH
SSH
تم الالتقاط بتاريخ 2026-07-28 من أحد CE في هذا النشر. يُسجّل sitecli/capture-manifest.json
العقدة المعنية، ويُعيد scripts/capture-sitecli.sh --check التحقق من سطح الأوامر
مقارنةً بـ CE حي.
يصل SSH إلى حساب admin على الجهاز، الذي تكون قشرة تسجيل دخوله هي Site CLI
(/opt/bin/vpmu). هذا هو المسار الوحيد إلى سطح الأوامر الكامل على الجهاز — يعرض
debug API 34 أمرًا، بينما يوفر الجهاز نفسه أوامر أكثر بكثير غير متوفرة في ذلك الـ API.
cd terraformSLI=$(terraform output -json ce_sli_private_ips | jq -r '.eastus01')ssh -tt -i ~/.ssh/id_ed25519 -J azureuser@<operator-vm> "admin@$SLI"كل جزء من سطر الأوامر هذا ضروري، وتشرح الأقسام الثلاثة التالية الخطأ الذي يمنعه كل منها.
لا يوجد موجه shell للوصول إليه: قشرة تسجيل دخول admin هي Site CLI، لذا تصل مباشرةً
إلى موجه >>> الخاص بها. شغّل الأوامر على الجهاز باستخدام execcli <name> هناك — راجع
الأوامر على الجهاز.
لماذا يكتب cloud-init المفتاح، لا الـ API
Section titled “لماذا يكتب cloud-init المفتاح، لا الـ API”يبدو admin_user_credentials.ssh_key على كائن الموقع تمامًا كالحقل المخصص لهذا الغرض.
يُقبل، ويبقى عند القراءة الثانية، ولا يُهيّئ شيئًا. يمتلك vpm المستخدمين المحليين على
العقدة ويرفض لمس هذا المستخدم — من سجل العقدة نفسه، ثلاث مرات خلال تشغيل واحد:
vpm users.go:165: Won't do any change for user admin (internal skip)كل شيء آخر ينبثق من هذا السطر الواحد. لا يوجد /var/home/admin/.ssh أبدًا، قبل أو
بعد وصول الموقع إلى ONLINE. يبقى تاريخ آخر تغيير لكلمة مرور admin عند تاريخ بناء الصورة
بينما يُظهر vesbkp وvesopcon التاريخ الحالي، لأن vpm عيّن هذين الاثنين وتخطّى admin.
ولا يُسجّل vpm أي شيء عن ssh_key أو authorized_keys في أي وقت.
لذا يجب كتابة الملف خارج vpm. admin هو uid 2202، مُضمَّن في صورة العقدة، لذا فهو
موجود قبل تشغيل cloud-init ويُحلَّل owner: admin:admin عند الكتابة — دون runcmd، دون
إصلاح ملكية:
- path: /var/home/admin/.ssh/authorized_keys permissions: "0600" owner: admin:admin content: | ${ssh_public_key}كان sshd دائمًا مستعدًا. تُبلّغ sshd -T عن pubkeyauthentication yes، ويظهر admin
في AllowUsers في كلا ملفَّي sshd_config المُضمَّنَين في العقدة. لم يكن هناك شيء
لتفعيله قط — فقط ملف مفقود.
لماذا يستجيب على عنوان واحد فقط
Section titled “لماذا يستجيب على عنوان واحد فقط”يرتبط sshd بـ 0.0.0.0:22، لكن العنوان الداخلي (SLI) فقط هو الموجود في مكدس شبكة
المضيف بطريقة يستجيب عليها sshd. يُعاد تسمية eth0 إلى a-i-eth0 ولا يحمل أي IP للمضيف
على الإطلاق — مستوى بيانات Argo يمتلك تلك الواجهة، وعنوان management/SLO الذي كان سيحمله
يظهر على vhost0 عوضًا عن ذلك. تبقى بطاقتا الشبكة الأخريان على مكدس المضيف تحت أسمائهما
الخاصة.
تم الاستطلاع من VM داخل VNet، على أحد CE:
management/SLO address timed outexternal address timed outinternal/SLI address OPEN SSH-2.0-OpenSSH_8.7an unused address timed out (control)استطلاع العنوان الذي تعرف العقدة به يُعيد بالضبط ما يُعيده مجموعة أمان مُغلقة. لا شيء يحجبه؛ لا يوجد مستمع على ذلك العنوان.
العناوين العامة لـ CE لا يوجد عليها مستمع على المنفذ 22 أيضًا، وهو سبب استخدام الأمر أعلاه
لـ -J: VM للمشغّل داخل VNet، في الشبكة الفرعية ذاتها لعناوين SLI. يبني هذا النشر واحدًا
لهذا الغرض — يُسمّيه terraform output -raw client_vm_name.
تحتاج Site CLI إلى طرفية وإلى إرجاع حرف الإدخال
Section titled “تحتاج Site CLI إلى طرفية وإلى إرجاع حرف الإدخال”قشرة تسجيل دخول admin ليست shell. إنها تطبيق go-prompt يضع الطرفية في وضع raw
ويقرأ ضربات المفاتيح لا الأسطر. أربع نتائج، كل منها يفشل بطريقة تبدو مشكلة مختلفة:
| الآلية | ما يحدث في غيابها |
|---|---|
تخصيص طرفية (ssh -tt) | panic: no such device or address من go-prompt.NewStandardInputParser، ما يبدو كتعطل الجهاز |
| إرسال إرجاع حرف (carriage return) لا تغذية سطر (line feed) لمفتاح Enter | لا يُرسَل السطر أبدًا، وتُغلق الجلسة عند نهاية الإدخال دون طباعة أي شيء |
| إبقاء الإدخال القياسي مفتوحًا | ينتهي الاتصال قبل عرض الأمر، فيبدو الأمر العامل صامتًا |
| كتابة نص الأمر وبايت Enter بشكل منفصل | يصل السطر الجديد إلى المخزن المؤقت كحرف حرفي ويُجيب الـ CLI بـ unknown command، ما يبدو كأن الأمر غير موجود |
لذا لا يعمل ssh host 'some-command': المعطى يُتجاهل وتبدأ الموجه التفاعلي على أي حال.
قُده كطرفية أو لا تقده أصلًا.
scripts/sitecli_ssh_harvest.py هو التطبيق المرجعي.
البانر هو فحص صحة مجاني
Section titled “البانر هو فحص صحة مجاني”قبل أن تكتب أي شيء، أجاب بانر تسجيل الدخول بالفعل على عدد من الأسئلة التي كنت ستقضي
أوامر لمعرفتها. من f5-xc-ce-vm-01، مع حذف الرسم النصي ASCII والـ IP العام:
UNAUTHORIZED ACCESS TO THIS DEVICE IS PROHIBITEDAll actions performed on this device are audited
Using https://register.ves.volterra.ioOS: rhel-9.2024.6Memory: 32768MiBStorage: sda: 31GiBCPU: Model: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz | CPUs: 8Software: crt-20250613-3382DNS: 168.63.129.16: OKNTP: SyncedUptime: 0 days, 5 hours, 20 minutesRegistration Status: PROVISIONEDSLO IP: 10.0.1.4/26WELCOME IN SITE CLIيُميّز Registration Status عقدة لا تزال في مرحلة الإنشاء (PROVISIONING) عن تلك التي
أنهت (PROVISIONED). Software هي سلسلة البناء التي تحدد الأوامر الموجودة.
يُغطّي DNS وNTP التبعيتَين اللتَين تعطلان التسجيل أولًا، لذا فإن عقدة لم تأتِ
على الإنترنت عادةً ما تكون قد أخبرتك بالسبب هنا — قبل الحاجة إلى
chronyc-sources أو
dig أصلًا.
توفير زوج المفاتيح
Section titled “توفير زوج المفاتيح”-
أنشئ زوج مفاتيح إن لم يكن لديك واحد. Ed25519 بدلًا من RSA: أقصر، ومقبول من
sshdالجهاز.Terminal window ssh-keygen -t ed25519 -C "ce-operator" -f ~/.ssh/id_ed25519 -
وجّه النشر إلى النصف العام. تقرأ وحدة المعالجة الجذر الملف مرة واحدة وتُمرّر السلسلة النصية إلى كل عقدة:
terraform/terraform.tfvars ssh_public_key_path = "~/.ssh/id_ed25519.pub"يأخذ
ssh_public_keyالمادة مضمّنة عوضًا عن ذلك، وهو ما تستخدمه اختبارات الخطة. النصف الخاص لا يغادر محطة عملك أبدًا. -
طبّق. اقرأ التحذير في أعلى هذه الصفحة أولًا — على نشر موجود سيستبدل هذا CE VMs.
ما ليس هذا
Section titled “ما ليس هذا”تم اختبار كل مما يلي واستبعاده أثناء الاعتقاد بأن المسار مستحيل. كل منها معقول بما يكفي لاستهلاك يوم كامل.
| ليس السبب | كيف استُبعد |
|---|---|
| البيانات الاعتمادية تنطبق فقط عند الإنشاء | يبدأ sshd نحو 90 ثانية في أول تشغيل، قبل وجود كائن الموقع. admin_user_credentials موجود أيضًا في ReplaceSpecType ويُطبَّق في المكان. |
block_all_services | إغلاق المنفذ 22 على عنوان management متطابق سواء كانت الخدمات محجوبة أم لا. |
| سطر جديد في نهاية المفتاح | اختُبر بالطريقتين، لا تغيير. cloud-init يجردها على أي حال، لأن كتلة حرفية ستُصيّر سطرًا ثانيًا فارغًا. |
| برمجيات CE أقدم أو مُثبَّتة | جُرّبت على ثلاثة بناءات، بما فيها واحدة تعمل بـ OpenSSH 9.9. |
admin_password مفقود | تعيين admin_password إلى جانب ssh_key على CE جديد من الصفر لم يغيّر شيئًا. |
المسارات الأخرى
Section titled “المسارات الأخرى”ONLINE.