user@server:~$ ssh [email protected]Welcome to server.Last login: 2026-05-26$ █

الغلاف الآمن (SSH)

11 دقيقة قراءةالشبكات

SSH هو البروتوكول الذي يدير النصف غير المرئي من الإنترنت: وحدة التحكم عن بعد لكل مسؤول نظام، وكل خطوة نشر يقوم بها مطور، وكل عملية دفع Git إلى مستودع خاص. لقد حل محل telnet في أواخر التسعينيات وأصبح بروتوكول الغلاف الآمن الافتراضي منذ ذلك الحين. إن معرفة ما تفعله بالفعل يجعل الكثير من العمليات تبدو منطقية.

يتم توفير نص المقالة الكامل باللغة الإنجليزية أدناه.

SSH (Secure Shell) هو بروتوكول شبكة تشفير لتشغيل خدمات الشبكة بشكل آمن عبر شبكة غير آمنة. الأكثر استخدامًا لتسجيل الدخول عن بعد عبر سطر الأوامر ("Shell" في الاسم) ولنقل الملفات، ولكن البروتوكول الأساسي عام بما يكفي لنفق أي تطبيق TCP. تم إنشاء SSH بواسطة Tatu Ylönen في عام 1995 بعد هجوم استنشاق كلمة المرور في جامعته؛ يعد تطبيق OpenSSH (الذي بدأ عام 1999) هو الإصدار الأكثر انتشارًا اليوم.

ما يوفره SSH

ثلاث خصائص:

  • Confidentiality - مشفرة أثناء النقل. يرى مراقبو الشبكة وحدات البايت المشفرة، وليس الأوامر أو كلمات المرور.
  • Integrity - يتم اكتشاف الحزم المعدلة ورفضها.
  • Authentication من كلا الطرفين - يقوم العميل بالمصادقة على الخادم (كلمة المرور أو المفتاح العام أو طريقة أخرى) ويقوم الخادم بالمصادقة على العميل (عبر المضيف) مفتاح).

تحل المجموعة محل المجموعة الأقدم من telnet وrlogin وrsh وrcp - والتي تنقل جميعها بيانات الاعتماد في نص عادي.

كيفية عمل اتصالات SSH

المصافحة المبسطة:

  1. Client يفتح اتصال TCP بالخادم على المنفذ 22 (قابل للتكوين).
  2. يتبادل الجانبان سلاسل الإصدار.
  3. يتبادل الجانبان الخوارزميات المدعومة؛ اختر أقوى تشفير متبادل، KEX، MAC.
  4. Key، عادةً منحنيات X25519 أو NIST هذه الأيام. يستمد كلا الجانبين سرًا مشتركًا دون اجتياز السلك في نص عادي.
  5. يرسل الخادم مفتاح المضيف الخاص به، موقعًا بالسر المشترك. يتحقق العميل من ~/.ssh/known_hosts.
  6. من هذه النقطة فصاعدًا، يتم تشفير كل شيء باستخدام مفاتيح مشتقة من السر المشترك.
  7. يقوم العميل بالمصادقة - عن طريق كلمة المرور أو المفتاح العام أو أي آلية أخرى.
  8. الجلسة المشفرة مفتوحة. يطلب العميل الصدفة، أو نقل الملفات، أو إعادة توجيه المنفذ، أو ما يريده بالفعل.

طرق المصادقة

  • Password. يقوم المستخدم بكتابة كلمة المرور؛ يتم إرساله مشفرًا داخل الجلسة. بسيطة، ولكنها عرضة لهجمات حشو بيانات الاعتماد ضد خوادم SSH المكشوفة.
  • Public key. العميل لديه مفتاح خاص (في ~/.ssh/id_ed25519 عادةً)؛ يحتوي الخادم على المفتاح العام المطابق في ~/.ssh/authorized_keys. يثبت العميل امتلاكه للمفتاح الخاص من خلال التوقيع على تحدٍ من الخادم. لا توجد كلمة مرور تعبر الشبكة. الافتراضي الموصى به لجميع حالات الاستخدام تقريبًا.
  • Certificate-based. يقوم CA بتسجيل شهادة لمفتاح المستخدم، بما في ذلك انتهاء الصلاحية والقيود. تثق الخوادم في CA، وتثق تلقائيًا في الشهادات الموقعة. النموذج الصحيح للمؤسسات التي لديها العديد من المستخدمين؛ يحل محل كابوس توزيع مفتاح ssh.
  • FIDO2 / مفتاح الأجهزة SSH. يدعم OpenSSH الأخير المفاتيح المدعومة برمز أمان الأجهزة. مقاومة التصيد الاحتيالي، تتطلب الحيازة المادية.
  • Multi-factor — اجمع بين ما سبق. كلمة المرور + المفتاح، أو كلمة المرور + رمز الأجهزة.

Beyond Shell الوصول: إعادة توجيه المنفذ

SSH يمكنه نفق حركة مرور TCP التعسفية من خلال الجلسة المشفرة:

  • إعادة توجيه المنفذ المحلي (-L): ssh -L 9000:internal:3306 user@bastion يفتح المنفذ المحلي 9000، الذي ينفق إلى internal:3306 عبر مضيف المعقل. مفيد للوصول إلى الخدمات الداخلية من خلال مضيف القفز.
  • إعادة توجيه المنفذ البعيد (-R): الاتجاه المعاكس. يحصل المضيف البعيد على منفذ يعود إلى الخدمة الموجودة على جهازك.
  • إعادة توجيه المنفذ الديناميكي (-D): يقوم SSH بإنشاء وكيل SOCKS5 على جهازك المحلي. أي تطبيق يُشار إليه يتم تمرير حركة مرور TCP الخاصة به عبر جلسة SSH. تعتبر شبكة VPN لمستخدم واحد عبر SSH.

SSH شبكة VPN الوحيدة الأكثر فائدة للأشخاص الفقراء؛ كل من لديه خادم في مكان ما يمكنه الوصول إليه.

نظام OpenSSH البيئي

  • ssh - العميل
  • sshd - الخادم الخفي
  • scp - نسخة آمنة (قديمة، تم استبدالها الآن في الغالب بـ sftp ضمن غطاء محرك السيارة)
  • sftp — بروتوكول نقل الملفات الآمن، وهو بروتوكول منفصل يعمل داخل SSH
  • ssh-agent — يقوم بتخزين المفاتيح التي تم فك تشفيرها مؤقتًا في الذاكرة حتى لا تدخل عبارة المرور لكل اتصال
  • ssh-keygen — ينشئ أزواج المفاتيح
  • ssh-copy-id - ينسخ مفتاحك العام إلى ملف مفاتيح معتمدة عن بعد

الدفاع عن خادم SSH

يرى خادم SSH على الإنترنت العام عمليات فحص حشو بيانات الاعتماد باستمرار. الدفاعات:

  • تعطيل مصادقة كلمة المرور. المفاتيح العامة فقط. يزيل ناقل هجوم حشو بيانات الاعتماد بالكامل.
  • استخدم مفاتيح Ed25519. حديث، سريع، صغير. ssh-keygen -t ed25519 هو الأمر الصحيح للمفاتيح الجديدة.
  • استخدم منفذًا غير افتراضي. هامشيًا؛ يقلل في الغالب من ضوضاء سجل الماسح الضوئي.
  • fail2ban أو sshguard - يحظر عناوين IP بعد المحاولات الفاشلة المتكررة.
  • Lالحد من حسابات المستخدمين التي يمكنها SSH. AllowUsers sshd_config.
  • استخدم VPN أو Tailscale - لا تعرض SSH للإنترنت العام على الإطلاق إذا كان بإمكانك تجنب ذلك.
  • تدقيق المضيفين المعروفين والمفاتيح المعتمدة. إزالة المفاتيح للمستخدمين المغادرين؛ تحقق من وجود إدخالات غير متوقعة.

الأسئلة المتداولة

ما هو المنفذ الذي يستخدمه SSH؟
22 افتراضيا. المنفذ قابل للتكوين. يقوم بعض المشغلين بنقل SSH إلى منفذ غير قياسي لتقليل حركة مرور الفحص في السجلات. هذا هو الأمن من خلال الغموض – وهو مفيد للنظافة، وليس للأمن الفعلي. الأمان الحقيقي هو المصادقة القوية.
هل SSH أكثر أمانًا من HTTPS؟
نماذج تهديد مختلفة كلاهما يستخدم التشفير الحديث وهما آمنان بشكل أساسي على مستوى البروتوكول. يتم استخدام SSH عادةً مع مصادقة المفتاح العام (بدون كلمات مرور، قوية جدًا) بينما لا تزال العديد من مواقع HTTPS تستخدم مصادقة كلمة المرور (أضعف افتراضيًا). البروتوكولات هي أقران. تختلف ممارسات النشر.
هل يمكنني استخدام SSH لنقل الملفات؟
نعم. يعمل كل من <code>scp</code> و<code>sftp</code> عبر SSH. يعد SFTP هو الخيار الحديث الأكثر قدرة - عمليات النقل القابلة للاستئناف، والعمليات العودية، والكتابة الذرية. يمكن لـ <code>rsync</code> أيضًا استخدام SSH كوسيلة نقل، وهي الأداة المناسبة لأي عملية نقل غير تافهة.
ما هو مفتاح SSH؟
زوج مفاتيح عام/خاص يُستخدم للمصادقة. المفتاح الخاص موجود في <code>~/.ssh/id_*</code> على جهازك؛ يتم تثبيت المفتاح العام في <code>~/.ssh/authorized_keys</code> على الخوادم التي تتصل بها. يعد فقدان المفتاح الخاص بدون عبارة مرور مشكلة خطيرة - حيث يمكن لأي شخص لديه هذا المفتاح تسجيل الدخول باسمك. قم دائمًا بحماية مفاتيح SSH باستخدام عبارة مرور.
لماذا يقول SSH "تم تغيير مفتاح المضيف"؟
تم تغيير مفتاح هوية الخادم منذ آخر اتصال لك - إما أنه تم إعادة بناء الخادم، أو تم تدوير المفتاح، أو أن هناك خطأ ما (الحالة الأكثر إثارة للقلق: شخص ما ينتحل صفة الخادم). لا تقبل المفتاح الجديد بشكل أعمى؛ التحقق من خارج النطاق مع مشغل الخادم. إذا كان التناوب مشروعًا، فقم بإزالة المفتاح القديم منknown_hosts واقبل المفتاح الجديد.
شرح SSH: كيف حل Secure Shell محل Telnet وماذا يوجد داخل كل جلسة SSH