صدر OpenSSH 10.0 في 9 أبريل 2025، وجعل تبادل المفاتيح الهجين المقاوم للحوسبة الكمّية هو الخيار الافتراضي، وأزال دعم مفاتيح DSA نهائياً. ومنذ ذلك الحين أضافت سلسلة 10.x تحذيراً في جهة العميل عند استخدام اتصال غير مقاوم للحوسبة الكمّية، ثم صدر الإصدار 10.6 في 6 أكتوبر 2026. يشرح هذا الدليل ما الذي تغيّر، وأي إصدار من OpenSSH يأتي مع كل إصدار من Debian وUbuntu، وكيف تتحقق مما تتفاوض عليه خوادمك وأجهزة العملاء فعلاً.
ما الذي تغيّر في OpenSSH 10
- تبادل مفاتيح افتراضي جديد. بحسب ملاحظات إصدارات OpenSSH يستخدم الإصدار 10.0 الخوارزمية
mlkem768x25519-sha256افتراضياً. وهي تجمع بين ML-KEM التي اعتمدها المعهد الأمريكي NIST معياراً، وبين تبادل X25519 التقليدي، فلا تكون أضعف منcurve25519-sha256، وتُعدّ آمنة من هجمات الحواسيب الكمّية. - إزالة DSA. أزال الإصدار 10.0 خوارزمية التوقيع DSA التي كانت معطلة افتراضياً منذ 2015.
- إعدادات خادم أخف. لم يعد sshd يعرض تبادل Diffie-Hellman ذا الحقول المنتهية (
diffie-hellman-group*) افتراضياً، مع بقاء دعمه في جهة العميل. كما نُقلت شيفرة المصادقة إلى برنامج منفصل اسمهsshd-auth، لذا قد تظهر بعض سطور السجل بهذا الاسم. - تحذير منذ الإصدار 10.1. منذ الإصدار 10.1 (6 أكتوبر 2025) يحذّر العميل
sshعندما لا يستخدم الاتصال تبادلاً مقاوماً للحوسبة الكمّية، ويتحكم في ذلك الخيارWarnWeakCryptoفيssh_config.
لماذا يهم تبادل المفاتيح الآن
توضح صفحة OpenSSH الخاصة بالتشفير ما بعد الكمّي السبب: سرية جلسة SSH بكاملها تعتمد على تبادل المفاتيح. ومن يسجّل الحركة المشفّرة اليوم قد يتمكن من فك تشفيرها لاحقاً إذا ظهر حاسوب كمّي قوي بما يكفي، وهو ما يُعرف بهجوم «خزّن الآن وفكّ التشفير لاحقاً». هذه الحواسيب غير موجودة بعد، لكن الحركة المرسلة اليوم تبقى معرّضة ما لم يُستخدم تبادل مقاوم. وقد وفّر OpenSSH هذا التبادل افتراضياً منذ الإصدار 9.0 (أبريل 2022) عبر sntrup761x25519-sha512، ثم أضاف ML-KEM في الإصدار 9.9. أما مفاتيح التوقيع مثل RSA وECDSA وEd25519 فمسألة منفصلة وأقل إلحاحاً، لأنه لا يوجد ما يعادل تسجيل الحركة لكسرها لاحقاً.
إصدار OpenSSH في توزيعتك
الإصدارات أدناه مأخوذة من متتبع حزم Debian ومن packages.ubuntu.com، والقوائم الافتراضية من صفحة الدليل sshd_config(5) لكل إصدار.
| الإصدار | OpenSSH | التبادل المقاوم للحوسبة الكمّية في القائمة الافتراضية |
|---|---|---|
| Debian 13 (trixie) | 10.0p1 | mlkem768x25519-sha256 أولاً ثم sntrup761x25519 |
| Debian 12 (bookworm) | 9.2p1 | sntrup761x25519-sha512 أولاً، ولا يوجد ML-KEM |
| Ubuntu 26.04 LTS | 10.2p1 | mlkem768x25519-sha256 أولاً |
| Ubuntu 24.04 LTS | 9.6p1 | sntrup761x25519-sha512@openssh.com أولاً، ولا يوجد ML-KEM |
| Ubuntu 22.04 LTS | 8.9p1 | sntrup761x25519-sha512@openssh.com بعد طرق ECDH التقليدية |
العميل هو من يحدد ترتيب الأفضلية، لذا فالمهم هو الطرفان معاً. فالعميل الحديث الذي يتصل بخادم Ubuntu 22.04 يحصل على تبادل مقاوم لأن الخادم يعرض sntrup761x25519، أما عميل Ubuntu 22.04 فيفضّل X25519 التقليدي افتراضياً كما تذكر ملاحظات الإصدار 8.9. وفي جانب توزيعات المؤسسات، تذكر ملاحظات إصدار AlmaLinux 9.8 أنه يتضمن OpenSSH 9.9p1. وقد تعدّل التوزيعات الإعدادات الافتراضية، لذا افحص النظام نفسه دائماً.
كيف تفحص الخادم والعميل
# installed versions (Debian/Ubuntu)
dpkg-query -W -f='${Package} ${Version}\n' openssh-server openssh-client
# key exchange methods this client supports
ssh -Q kex
# what the server will offer, after its configuration is applied
sudo sshd -T | grep -i '^kexalgorithms'
# what a real connection negotiated
ssh -v user@server.example.com exit 2>&1 | grep 'kex: algorithm'يعرض الأمر ssh -Q kex خوارزميات تبادل المفاتيح المدعومة (ssh(1))، ويفحص sshd -T الإعدادات ويطبع القيم الفعلية (sshd(8)). إذا أظهر سطر التفاوض mlkem768x25519-sha256 أو sntrup761x25519-sha512 فالجلسة محمية من هجوم التخزين وفك التشفير لاحقاً.
اختياري: فرض تبادل مقاوم للحوسبة الكمّية على الخادم
يمكنك في Debian 13 أو Ubuntu 26.04 حصر الخادم في الطرق المقاومة للحوسبة الكمّية، لكن افعل ذلك فقط عندما تكون كل أجهزة العملاء والسكربتات والأدوات المتصلة حديثة بما يكفي؛ فالعملاء والمكتبات وأجهزة الشبكة القديمة ستفشل في الاتصال.
# in /etc/ssh/sshd_config (or a file under /etc/ssh/sshd_config.d/ if it is included)
KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com
sudo sshd -t && sudo systemctl reload sshلا يعرف sshd في Debian 12 الخوارزمية mlkem768x25519-sha256، فلا تنسخ هذا السطر إلى خوادم bookworm. وأبقِ جلسة ثانية مفتوحة أثناء الاختبار.
مفاتيح DSA والأجهزة القديمة
تنص ملاحظات إصدار trixie على أن مفاتيح DSA لم تعد مدعومة حتى مع خيارات التجاوز القديمة. فإذا كان هناك ما يزال يدخل بمفتاح DSA فاستبدله قبل الترقية:
# find DSA keys still in use
ls ~/.ssh/id_dsa* 2>/dev/null
grep -n '^ssh-dss' ~/.ssh/authorized_keys
# create and install an Ed25519 key instead
ssh-keygen -t ed25519
ssh-copy-id user@server.example.comوللأجهزة القديمة التي لا تدعم إلا DSA توفر Debian الأمر ssh1 ضمن الحزمة openssh-client-ssh1. وإذا ظهر التحذير الجديد عند الاتصال بخادم قديم، فتقترح صفحة OpenSSH إسكاته لذلك الخادم وحده، مثلاً بكتابة Match host legacy.example.com ثم WarnWeakCrypto no-pq-kex في الملف ~/.ssh/config.
ما الذي ينبغي فعله
- شغّل
sshd -Tعلى كل خادم وتأكد من وجود طريقة مقاومة للحوسبة الكمّية في القائمة المعروضة، ومن أن أي سطرKexAlgorithmsمخصص لم يحذفها. - حدّث أجهزة المسؤولين وخوادم التكامل المستمر، فالعميل هو من يحدد ترتيب الأفضلية، والعملاء الأقدم من OpenSSH 9.0 لا يفضّلون التبادل المقاوم.
- خطط للانتقال من Debian 12 إلى Debian 13، أو من Ubuntu 22.04/24.04 إلى إصدار يتضمن OpenSSH 10، للحصول على ML-KEM افتراضياً.
- احذف ما تبقى من مفاتيح DSA من
authorized_keysومن مخازن المفاتيح الآن، قبل أن تُلغي الترقية دعمها. - أسكت تحذير الحوسبة الكمّية لكل خادم على حدة لا بشكل عام، وتعامل مع كل خادم من هذا النوع على أنه جهاز يحتاج إلى ترقية.
المصادر
- openssh.com/releasenotes.html
- openssh.com/pq.html
- manpages.debian.org/trixie/openssh-server/sshd_config.5.en.html
- manpages.debian.org/bookworm/openssh-server/sshd_config.5.en.html
- manpages.ubuntu.com/manpages/jammy/en/man5/sshd_config.5.html
- manpages.ubuntu.com/manpages/noble/en/man5/sshd_config.5.html
- manpages.ubuntu.com/manpages/resolute/en/man5/sshd_config.5.html
- manpages.ubuntu.com/manpages/resolute/en/man5/ssh_config.5.html
- manpages.debian.org/trixie/openssh-client/ssh.1.en.html
- manpages.debian.org/trixie/openssh-server/sshd.8.en.html
- tracker.debian.org/pkg/openssh
- packages.ubuntu.com/search?keywords=openssh-server&searchon=names&exact=1&suite=all&sec...
- debian.org/releases/trixie/release-notes/issues.en.html
- wiki.almalinux.org/release-notes/9.8.html
Comments
0 total · 0 threads