دليل عملي

تحديث OpenSSH 10.6: حدّث sshd دون فقدان الوصول

الأمان والمراقبة12 دقيقةً للقراءةعدد الخطوات: 14

يجلب OpenSSH 10.6 ثمانية إصلاحات أمنية دون أن يسمّي أيًّا منها بمعرّف CVE، وتعرض توزيعتك على الأرجح رقم إصدار مختلفًا تمامًا. بالنسبة إلى وكالة تدير عشرات الخوادم لعملائها، ليس السؤال «هل ننتقل إلى 10.6؟» بل «هل تحمل خوادمي هذه الإصلاحات، وما الذي قد يتعطّل عند تطبيقها؟». يشرح لك هذا الدليل كيف تقرأ الإصدار النشط فعليًّا، وكيف ترصد التغييرين اللذين يمسّان سكربتاتك، وكيف تعيد تحميل `sshd` دون أن تفقد الوصول إلى أي خادم.

المحتويات· ما الذي ينشره OpenSSH 10.6، وما الذي لا يقوله1/13
  1. 01ما الذي ينشره OpenSSH 10.6، وما الذي لا يقوله
  2. 02الإصلاحات الأمنية في 10.6 كما وردت
  3. 03الرقم المعروض لا يخبرك إن كنت محميًّا
  4. 04ما توفّره التوزيعات حتى 22 أكتوبر 2026
  5. 05جرد الإصدار النشط فعليًّا
  6. 06ما الذي قد يتعطّل في مجموعة خوادم مُدارة
  7. 07التغيير والأثر والإجراء: الجدول المرجعي
  8. 08افحص الإعداد قبل إعادة تحميل sshd
  9. 09نفّذ التحديث دون أن تقطع وصولك
  10. 10التصليب: إجراء، لا قائمة تحقق إضافية
  11. 11استكشاف الأخطاء: الرسائل التي قد تصادفها
  12. 12رسائل الخطأ وحلولها
  13. 13مجموعة خوادم متجانسة تُحدَّث بإجراء واحد

ما الذي ينشره OpenSSH 10.6، وما الذي لا يقوله

صدر OpenSSH 10.6، ونسخته المحمولة 10.6p1 التي تعتمدها توزيعات Linux، في 6 أكتوبر 2026. تعلن ملاحظات الإصدار عن «عدد من الإصلاحات الأمنية» وعدة ميزات جديدة وبعض تصحيحات الأخطاء الصغيرة. لا تذكر أي معرّف CVE ولا تتحدث عن أي استغلال جارٍ: لذلك يلتزم هذا الدليل بما تكتبه حرفيًّا.

يضيف فريق OpenSSH ملاحظة تهمّ كل من يدير مجموعة خوادم. فهو يتلقى عددًا كبيرًا من البلاغات المُعدّة بأدوات الذكاء الاصطناعي، ولاحظ أن عدة أخطاء اكتشفها باحثون مختلفون كلٌّ على حدة، واستنتج أن المهاجمين قادرون على اكتشافها أيضًا. لذا يعلن عن إصدارات أكثر تواترًا، لإيصال الإصلاحات أسرع بدل تجميعها.

بالنسبة إلى الوكالة، النتيجة ملموسة: لم يعد تحديث OpenSSH حدثًا سنويًّا. تحتاج إلى إجراء يتكرر دون مخاطرة، خادمًا بعد خادم، ويخبرك في كل مرة بما تغيّر فعلًا.

الإصلاحات الأمنية في 10.6 كما وردت

  • sftp — يتحقق العميل بصرامة أكبر من المسارات التي يعيدها الخادم، كي لا يستطيع خادم أن يجعل نسخًا متكررًا يكتب خارج مجلده الهدف.
  • GSSAPI — لا يحتفظ sshd ببيانات اعتماد GSSAPI إلا بعد مصادقة ناجحة، ويعيد ضبط حالة GSSAPI قبل كل محاولة.
  • الضغط — عُطّل مُرمِّز القاموس LZ77 لإغلاق قناة جانبية: نص يُحقن في قناة ما كان قد يساعد على تخمين أسرار تمرّ في قناة أخرى من الجلسة نفسها.
  • أسماء المستخدمين — يرفض ssh المحرفين $ و\ في اسم يُكتب في سطر الأوامر، لتجنّب حقن أوامر في الصدفة عبر ProxyCommand أو Match exec.
  • الشهادات — يعالج ssh-keygen التوقيت الصيفي بشكل صحيح عند تحويل التواريخ؛ كان الخطأ قد يزيح انتهاء صلاحية شهادة بساعة.
  • الحزم المضغوطة — لم يعد بإمكان محتوى مضغوط أن يتجاوز، بعد فكّ ضغطه، الحجم الأقصى للحزمة.
  • authorized_keys — تنطبق الكلمة المفتاحية restrict الآن على تمرير الأنفاق أيضًا (PermitTunnel، المعطّل افتراضيًّا).
  • القيم none — بعض الخيارات التي تقبل none، ومنها AuthorizedPrincipalsFile، كانت تُقرأ كاسم ملف عندما تعيد كتلة Match تعريفها.

الرقم المعروض لا يخبرك إن كنت محميًّا

يأتي الاعتراض سريعًا: لا CVE في الملاحظات، ولا توزيعة مستقرة توفّر 10.6، وإعادة تشغيل فاشلة لـsshd قد تبقيك خارج الخادم. فلماذا الاهتمام الآن؟

لأن التوزيعات لا تتبع أرقام المشروع الأصلي. فهي تحتفظ بإصدار OpenSSH الذي صدرت به وتنقل إليه الإصلاحات. هذا ما فعلته Ubuntu: حزم الأمان المنشورة في 14 أكتوبر 2026 للإصدارات 22.04 و24.04 و26.04 تتضمن الإصلاحات الثمانية المذكورة أعلاه، بما فيها رفض $ و\، مع بقائها على 8.9p1 و9.6p1 و10.2p1. في المقابل، وحتى 22 أكتوبر 2026، ما زال متتبّع الأمان في Debian يصنّف النقاط نفسها غير مصحّحة على Debian 12 وDebian 13، دون نشر أي إشعار أمني؛ ولا يوفّر 10.6p1 سوى فرعَي التطوير forky وsid.

إذن خادم Ubuntu محدَّث على 9.6p1 محميّ، في هذه النقاط تحديدًا، أفضل من خادم Debian على 10.0p1. ما تتحقق منه هو الحزمة المثبّتة وسجل تغييراتها. أما إجراء الفحص وإعادة التحميل فسيبقى هو نفسه لكل تحديث قادم.

ما توفّره التوزيعات حتى 22 أكتوبر 2026

مرّر الجدول أفقيًا

التوزيعةحزمة OpenSSHإصلاحات 10.6
Debian 12 (bookworm)1:9.2p1-2+deb12u10غير منقولة وفق متتبّع Debian
Debian 13 (trixie)1:10.0p1-7+deb13u4غير منقولة وفق متتبّع Debian
Debian forky وsid1:10.6p1-1مضمّنة (الإصدار الأصلي 10.6p1)
Ubuntu 22.04 LTS1:8.9p1-3ubuntu0.18منقولة عبر تحديث الأمان
Ubuntu 24.04 LTS1:9.6p1-3ubuntu13.20منقولة عبر تحديث الأمان
Ubuntu 26.04 LTS1:10.2p1-2ubuntu3.8منقولة عبر تحديث الأمان
AlmaLinux 88.0p1راجع إشعارات Red Hat وAlmaLinux
AlmaLinux 9 و109.9p1راجع إشعارات Red Hat وAlmaLinux

جرد الإصدار النشط فعليًّا

  1. اقرأ إصدار العميل

    يعرض ssh -V إصدار عميل OpenSSH وإصدار مكتبته التشفيرية، على مخرج الأخطاء. العميل هو من يطبّق فحص أسماء المستخدمين: على جهاز الإدارة أو على خادم bastion، هذا هو الإصدار الذي يهمّ.

  2. اقرأ إصدار الخادم

    يعرض sudo /usr/sbin/sshd -V إصدار الخدمة. هذا الخيار موجود منذ OpenSSH 9.2: على خادم أقدم، مثل AlmaLinux 8 على 8.0p1، لا يُعرف الخيار، فتلجأ إلى مدير الحزم.

  3. اقرأ الحزمة المثبّتة

    على Debian وUbuntu: dpkg -s openssh-server | grep ^Version. على AlmaLinux وRocky Linux: rpm -q openssh-server. دوّن الرقم كاملًا، مع لاحقة التوزيعة: هو ما تقارنه بالجدول أعلاه.

  4. ابحث عن الإصلاحات في سجل الحزمة

    على Debian وUbuntu: apt changelog openssh-server | head -60. على AlmaLinux: rpm -q --changelog openssh-server | head -60. على Ubuntu، تذكر مداخل SECURITY UPDATE مثلًا «invalid chars in command-line username» أو «incorrect use of LZ77 dictionary coder».

  5. تحقّق من أن الخدمة أُعيد تشغيلها

    الحزمة المحدَّثة لا تحمي شيئًا إن كانت الخدمة القديمة ما زالت تعمل. قارن systemctl show -p ActiveEnterTimestamp ssh (اسم الخدمة sshd على AlmaLinux) بتاريخ تثبيت الحزمة.

  6. امسح مجموعة الخوادم بأمر واحد

    اكتب خوادمك في servers.txt، خادمًا في كل سطر، ثم شغّل: while read -r h; do printf '%s : ' "$h"; ssh -n -o BatchMode=yes "$h" 'dpkg -s openssh-server 2>/dev/null | grep ^Version || rpm -q openssh-server'; done < servers.txt. تحصل على سطر لكل خادم، ترتّبه حسب عائلة النظام.

ما الذي قد يتعطّل في مجموعة خوادم مُدارة

تصنّف الملاحظات ثلاث نقاط ضمن التغييرات التي قد تكسر التوافق؛ واحدة فقط تمسّ سكربتاتك فعلًا.

الأولى هي رفض $ و\ في اسم مستخدم يُكتب في سطر الأوامر، سواء بصيغة user@host أو مع -l. يتوقف ssh حينها برسالة remote username contains invalid characters. الحالات الواقعية: حساب نطاق بصيغة DOMAIN\user، أو سكربت يبني أمر ssh من بيانات خارجية. الاسم المكتوب حرفيًّا في التوجيه User داخل كتلة Host لا يخضع لهذا الفحص؛ لكن الشيفرة المصدرية تُظهر أن User المبني برموز % يخضع له. وفي ProxyJump، يُرفض الاسم غير الصالح لمضيف القفز برسالة invalid username.

الثانية هي الضغط: ما زال Compression yes مقبولًا، لكنه يضغط بكفاءة أقل دون قاموس LZ77. لا شيء يتعطّل؛ قد يستغرق النقل عبر رابط بطيء وقتًا أطول فحسب. يوصي فريق OpenSSH بالضغط على مستوى التطبيق بدل الضغط داخل SSH.

الثالثة، أي تعطيل GatewayPorts وStreamLocalForwarding، لا تخصّ إلا منصات قديمة مثل QNX 6 أو SCO OpenServer 5، لا خوادم Linux لديك. ويُضاف أثران ظاهران: يعرض scp -R تحذير إهمال، ويسجّل sshd افتراضيًّا، عبر الخيار الجديد WarnWeakCrypto، العملاءَ الذين يتفاوضون على تبادل مفاتيح غير مقاوم للحواسيب الكمومية.

التغيير والأثر والإجراء: الجدول المرجعي

مرّر الجدول أفقيًا

التغيير في 10.6الأثر على مجموعة الخوادمالإجراء
رفض `$` و`\` في اسم يُكتب في سطر الأوامرفشل سكربتات وحسابات `DOMAIN\user`اكتب الاسم حرفيًّا في `User` داخل كتلة `Host`
تعطيل قاموس LZ77`Compression yes` أقل فعاليةاضغط قبل النقل (`tar`، `rsync -z`)
بيانات اعتماد GSSAPI تُحفظ بعد النجاح فقطلا أثر خارج مصادقة Kerberosاختبر دخولًا عبر Kerberos بعد التحديث
تطبيق `restrict` على الأنفاقمفتاح `restrict` لم يعد يفتح نفقًاأحصِ مفاتيح الخدمات التي تعتمد على `PermitTunnel`
قراءة صحيحة لقيم `none` في `Match``AuthorizedPrincipalsFile none` يعطّل الخيار أخيرًاراجع كتل `Match` بالأمر `sshd -T -C`
إهمال `scp -R`تحذير على مخرج الأخطاءاحذف `-R`: يمرّ النسخ عبر الجهاز الذي يشغّل `scp`
تفعيل `WarnWeakCrypto` على الخادمأسطر جديدة في سجلات `sshd`حدّد العملاء القدامى الواجب تحديثهم
تصحيح التوقيت الصيفي في `ssh-keygen`انتهاء صلاحية شهادات كان مزاحًا بساعةافحص الشهادات الصادرة قرب تغيير الساعة

افحص الإعداد قبل إعادة تحميل sshd

يتحقق sshd -t من صلاحية ملف الإعداد والمفاتيح، دون تشغيل أي شيء. وتوصي به صفحة الدليل تحديدًا لتحديث sshd بشكل موثوق، لأن خيارات الإعداد قد تتغير من إصدار إلى آخر. لا مخرجات ورمز خروج 0: الملف مقروء.

يذهب sshd -T أبعد: يعرض الإعداد الفعلي، بما في ذلك القيم الافتراضية. إنه صورتك قبل التحديث وبعده. لفحص كتلة Match، حاكِ اتصالًا بالخيار -C، مثلًا sudo sshd -T -C user=deploy,host=bastion.your-domain.com,addr=203.0.113.10. الكلمات المفتاحية المقبولة هي user وhost وaddr وladdr وlport وrdomain.

يعتمد أمر إعادة التحميل على العائلة: اسم الخدمة ssh على Debian وUbuntu، وsshd على AlmaLinux وRocky Linux. تبقى الجلسات المفتوحة قائمة بعد إعادة التحميل. على إصدارات Ubuntu الحديثة، يستمع ssh.socket بدل الخدمة: تغيير Port يتطلب systemctl daemon-reload ثم إعادة تشغيل ssh.socket.

نفّذ التحديث دون أن تقطع وصولك

  1. أبقِ جلسة إنقاذ مفتوحة

    افتح جلسة SSH على الخادم، وانتقل إلى root بالأمر sudo -i، ولا تغلقها إلا في النهاية. إذا رفض الإعداد الجديد الاتصالات، فمنها تصلح الخلل.

  2. التقط صورة للإعداد الفعلي

    sudo sshd -T > /root/sshd-T-before.txt. سيخبرك هذا الملف بما غيّره التحديث، قيمة بقيمة.

  3. حدّث الحزم

    Debian وUbuntu: sudo apt update && sudo apt install --only-upgrade openssh-server openssh-client. AlmaLinux وRocky Linux: sudo dnf upgrade 'openssh*'.

  4. اختبر الإعداد

    sudo sshd -t && echo OK. إذا رُفض سطر، فأصلحه قبل أي خطوة أخرى: خدمة لا تستطيع قراءة إعدادها لن تبدأ أيضًا عند إعادة تشغيل الخادم التالية.

  5. أعد تحميل الخدمة

    sudo systemctl reload ssh على Debian وUbuntu، وsudo systemctl reload sshd على AlmaLinux. كثيرًا ما تكون الحزمة قد أعادت تشغيل الخدمة: إعادة التحميل لا تكلّف شيئًا وتضمن أن الإعداد المقروء هو الصحيح.

  6. افتح اتصالًا جديدًا من طرفية أخرى

    ssh -v [email protected]. سجّل الدخول فعلًا، بالمفتاح والمستخدم المعتادين. ما دام هذا الاتصال لم ينجح، تبقى جلسة الإنقاذ مفتوحة.

  7. قارن قبل وبعد

    sudo sshd -T | diff /root/sshd-T-before.txt -. السطر غير المتوقع يُعالَج الآن، لا يوم يتصل بك عميل.

  8. عمّم على الخوادم على دفعات، عبر bastion

    خادم تجريبي واحد لكل عائلة نظام أولًا، ثم البقية. إذا كان وصولك يمرّ عبر خادم bastion، فحدّثه في الأخير بعد التحقق من مداخل ProxyJump: الإعداد مشروح في دليلنا لخادم bastion لـSSH على VPS.

التصليب: إجراء، لا قائمة تحقق إضافية

لا يعيد هذا الدليل تصليب sshd_config: الخيارات PasswordAuthentication no وPermitRootLogin وAllowUsers أو AllowGroups وMaxAuthTries مفصّلة في قائمة التصليب للوكالات وفي التصليب الأولي لخادم Linux. غير أن نقطة واحدة تتغير مع sshd أصلي بإصدار 10.6: الخيار الجديد PubkeyOptions max-pk-ok يسمح للعميل باختبار ما يصل إلى ستة مفاتيح عامة افتراضيًّا دون احتساب هذه المحاولات ضمن MaxAuthTries. وهكذا لم يعد MaxAuthTries المنخفض يرفض المسؤول الذي يحتفظ بمفاتيح كثيرة في وكيله.

استكشاف الأخطاء: الرسائل التي قد تصادفها

الرسائل أدناه مأخوذة من الشيفرة المصدرية لـOpenSSH 10.6p1. تظهر في الطرفية بالنسبة إلى العميل، وفي سجل الخدمة بالنسبة إلى الخادم (journalctl -u ssh أو journalctl -u sshd). اقرأ الرسالة كاملة دائمًا قبل التصرف: معظمها يشير إلى السطر المسبب.

رسائل الخطأ وحلولها

  • remote username contains invalid characters — الاسم المُمرَّر في سطر الأوامر يحتوي $ أو \ أو محرفًا مرفوضًا آخر؛ اكتب الحساب حرفيًّا في User داخل كتلة Host.
  • Bad configuration option: AgentSocketPath — نُسخ خيار ظهر في 10.6 إلى خادم لا يعرفه؛ تذكر الرسالة الملف والسطر، ويتوقف sshd برسالة terminating, 1 bad configuration options.
  • Missing privilege separation directory: /run/sshd — شُغّل sshd -t والخدمة متوقفة، على Debian أو Ubuntu؛ أنشئ المجلد بالأمر sudo mkdir -p /run/sshd ثم أعد الاختبار.
  • warning: remote/remote -R copy mode is deprecated and will soon be removed — احذف -R من سكربتات scp قبل أن يتجاهله إصدار قادم.
  • invalid username — مضيف قفز في ProxyJump يحمل اسمًا مرفوضًا؛ انقل الاسم إلى كتلة Host مخصّصة لخادم bastion.
  • تجاهُل منفذ معدَّل على Ubuntu — ما زال ssh.socket يستمع على المنفذ القديم؛ شغّل sudo systemctl daemon-reload ثم sudo systemctl restart ssh.socket.

مجموعة خوادم متجانسة تُحدَّث بإجراء واحد

ما يجعل تحديث OpenSSH محفوفًا بالمخاطر ليس الإصدار، بل مجموعة خوادم لكل خادم فيها تاريخه الخاص. ثلاث توزيعات، وأربع طرق لتسمية الخدمة، وسكربتات تمرّر أسماء المستخدمين في سطر الأوامر: كل اختلاف يصبح استثناءً يُعالَج يدويًّا، غالبًا في مساء ينتظر فيه عميل.

للوكالة التي تدير عشرة خوادم أو خمسين مصلحة في تقليص هذه الاختلافات. عائلة نظام واحدة، وإجراء فحص واحد (sshd -t، وsshd -T قبل وبعد، وجلسة إنقاذ)، وجرد يخبرك بأمر واحد أي حزمة تعمل وأين. على ServOrbit.com، تجمع مساحة الوكالات محفظة عملائك — أسماء النطاقات وحسابات الاستضافة وخوادم VPS — ومواعيد تجديدها على منصة واحدة. أما إجراء التحديث فيبقى بين يديك: يصفه هذا الدليل كما هو، لتطبّقه على كل خادم.

خوادم عملائك في مكان واحد

مساحة للوكالات تتابع منها محفظة عملائك، من تاريخ انتهاء نطاق إلى صلاحيات root على خادم VPS. تبقى العلاقة مع العميل بين يديك، ونتولى نحن البنية التحتية.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة