عندما يتعلق الأمر بالحوسبة عن بعد، SSH هو أحد أكثر البروتوكولات شعبية وأمانًا. SSH هو بروتوكول شبكة تشفير ينشئ اتصالاً آمنًا بالأجهزة البعيدة. عند الاتصال بجهاز بعيد، يمكن للمستخدم تشغيل الأوامر على واجهة الأوامر البعيدة (remote shell). يعد SSH الأكثر شيوعًا بين مسؤولي الشبكات والأنظمة.
يوضح هذا الدليل، المصمم على شكل ورقة غش (cheat sheet)، نظرة عامة على SSH، وبعض الطرق الشائعة للاتصال باستخدام SSH، وتكوينات SSH المختلفة.
نظرة عامة على SSH
SSH هو اختصار لـ Secure Shell (الغطاء الآمن). يشير البعض أيضًا إلى SSH باسم Secure Socket Shell. يعد SSH الطريقة الأكثر شيوعًا للوصول إلى خادم بعيد. عند الاتصال بنظام بعيد باستخدام SSH، فإنك تتصل بحساب موجود. بمجرد الاتصال، سيكون لديك حق الوصول إلى جلسة واجهة الأوامر (shell session). سيتم تنفيذ جميع الأوامر التي يتم تشغيلها على الجهاز البعيد وطباعة المخرجات على جهازك المحلي.
يتبع اتصال SSH نموذج العميل والخادم (client-server). يجب أن يقوم النظام البعيد بتشغيل برنامج SSH الخفي (SSH daemon) لقبول اتصالات SSH البعيدة. يستمع برنامج SSH الخفي إلى منافذ محددة، ويصادق على طلبات الاتصال، وينشئ البيئة المناسبة عند استيفاء الشروط.
في هذا الدليل، قمنا بـ تكوين خادمي Ubuntu. سيتم تكوين الخادم الأساسي للاتصال بالخادم الثانوي. وسيتم تكوين الخادم الثانوي لقبول اتصالات SSH من الخادم الأساسي. سيتم استخدام عناوين IP الخاصة بهذه الخوادم طوال الدليل:
-
الأساسي: 31.171.250.121
-
الثانوي: 31.171.250.130
كبداية، يمكنك إلقاء نظرة على أدلتنا التفصيلية حول كيفية استخدام SSH للاتصال بخادم بعيد في Ubuntu و كيفية تكوين خادم Linux الخاص بك لاستخدام المصادقة القائمة على مفتاح SSH. والآن، لنبدأ!
مصادقة SSH
هناك نوعان رئيسيان لمصادقة SSH. الطريقة التقليدية هي استخدام كلمة المرور، وهي أقل أمانًا ولا يُنصح بها بشدة. الطريقة الثانية هي مفاتيح SSH، والتي توفر أمانًا قويًا للغاية ويُنصح بها بشدة.
على الرغم من أن مصادقة كلمة المرور أسهل في الفهم والتكوين، إلا أنه يسهل استغلالها. على سبيل المثال، يمكن للبوتات الآلية استخدام القوة الغاشمة (brute force) لاختراق النظام. مفاتيح SSH هي مفاتيح تشفير. يتكون كل مفتاح من جزأين – مفتاح خاص ومفتاح عام. يمكن مشاركة المفتاح العام في أي مكان دون أي قلق. ومع ذلك، يجب أن يظل المفتاح الخاص محميًا.
لاستخدام مفاتيح SSH كطريقة للمصادقة، يجب أن يحتوي النظام البعيد على نسخة مثبتة من المفتاح العام. يجب أيضًا تثبيت نسخ من المفاتيح الخاصة والعامة على النظام المحلي. بشكل افتراضي، يتم إدراج المفاتيح العامة في الملف التالي. يمتلك كل مستخدم فريد نسخة فريدة من هذا الملف:
|
1 |
~/.ssh/authorized_keys |
إليك كيفية سير عملية المصادقة:
-
يرسل نظام العميل طلب اتصال إلى النظام البعيد. كما يرسل أيضًا مفتاح SSH المراد استخدامه.
-
يتحقق النظام البعيد مما إذا كان المفتاح العام مدرجًا في authorized_keys.
-
إذا كان المفتاح موجودًا، فسيتم إنشاء سلسلة عشوائية وتشفيرها باستخدام المفتاح العام. لا يمكن فك تشفير الرسالة المشفرة إلا باستخدام المفتاح الخاص.
-
عند استلام السلسلة، سيقوم العميل بفك تشفيرها.
-
من خلال دمج السلسلة ومعرف الجلسة (session ID) الذي تم التفاوض عليه مسبقًا، يتم إنشاء هاش MD5. يرسل العميل هاش MD5 إلى النظام البعيد.
-
يعرف النظام البعيد السلسلة العشوائية ومعرف الجلسة. إذا تطابق هاش MD5، فسيتم السماح بالاتصال.
مفاتيح SSH
في هذا الدليل، سيكون مفتاح SSH هو التركيز الأساسي للمصادقة. لذلك، سيركز هذا القسم على كيفية العمل مع مفاتيح SSH.
-
توليد زوج مفاتيح SSH
بشكل افتراضي، لا يحتوي نظام Linux على مفتاح SSH مثبت. ومع ذلك، قد يحتوي النظام على مفاتيح SSH تم إنشاؤها/تثبيتها مسبقًا. بافتراض عدم وجود مفتاح SSH سابق، نحتاج إلى إنشاء زوج مفاتيح SSH عام وخاص جديد. يدعم SSH العديد من خوارزميات التشفير لإنشاء مفاتيح SSH، على سبيل المثال، RSA و DSA و ECDSA و EdDSA. تعد RSA هي الخوارزمية الافتراضية والمفضلة.
-
توليد زوج مفاتيح RSA عادي
لتوليد زوج مفاتيح SSH، قم بتشغيل الأمر التالي:
|
1 |
ssh-keygen |
ستطلب منك المطالبة تحديد مكان حفظ زوج المفاتيح. وكما ذكرنا، سيكون زوج مفاتيح RSA. إذا لم يتم إدخال أي قيمة، فسيقوم SSH بحفظه في الموقع الافتراضي /home/demo/.ssh/id_rsa.
الخطوة التالية هي إدخال عبارة مرور. يوصى باستخدام عبارة مرور. طول عبارة المرور اختياري. وهي تضيف طبقة من الأمان. ومع ذلك، يسمح SSH بتوليد مفاتيح بدون أي عبارة مرور. فقط اضغط على Enter إذا كنت تريد مفاتيح بدون عبارة مرور.
يوفر المخرج النهائي معلومات المفتاح التالية:
-
موقع المفتاح الخاص ( /root/.ssh/id_rsa). لا ينبغي مشاركته أبداً.
-
موقع المفتاح العام ( /root/.ssh/id_rsa.pub). من الآمن مشاركته مع أي شخص.
-
بصمة المفتاح.
-
صورة عشوائية للمفتاح. الفكرة هي أنه إذا حدث اختراق للمفاتيح، فربما يمكنك معرفة ذلك من خلال ملاحظة أي تغيير في صورة المفتاح.
-
توليد زوج مفاتيح RSA ببتات مختلفة
افتراضياً، تكون مفاتيح SSH بحجم 2048 بت. بالنسبة للأمان، يعتبر هذا كافياً. ومع ذلك، يمكننا تحديد استخدام عدد مختلف من البتات يدوياً. كلما زادت قيمة البت، زادت قوة المفتاح.
قم بتشغيل الأمر التالي لتوليد زوج مفاتيح SSH بحجم 4096 بت. تدعم معظم الخوادم مفاتيح SSH بحجم 4096 بت. إذا كان المفتاح كبيراً جداً، فقد لا يتم قبوله لأغراض الحماية من هجمات حجب الخدمة (DDoS):
|
1 |
ssh-keygen -b 4096 |
نظراً لأننا قمنا بالفعل بتوليد زوج مفاتيح، فسيسألك SSH عما إذا كنت تريد الكتابة فوق الزوج السابق. بقية العملية هي نفسها توليد زوج مفاتيح عادي.
-
تغيير عبارة مرور المفتاح الخاص
يمكننا تغيير عبارة مرور المفتاح الخاص. تتطلب العملية معرفة عبارة المرور الحالية. لتغيير عبارة المرور، قم بتشغيل الأمر التالي:
|
1 |
ssh-keygen -p |

سيطلب منك الأمر إدخال موقع المفتاح الخاص. اضغط على Enter إذا كان المفتاح مخزناً في الموقع الافتراضي. أدخل عبارة المرور الحالية. إذا تم قبولها، يمكنك حينها تعيين عبارة مرور جديدة.
-
عرض بصمة مفتاح SSH
يشترك كل زوج مفاتيح SSH في بصمة تشفيرية. يمكن استخدام هذه البصمة لتحديد المفاتيح الفريدة. يمكن أن يكون هذا مفيداً في العديد من المواقف. قم بتشغيل الأمر التالي للتحقق من بصمة مفتاح SSH:
|
1 |
ssh-keygen -l |

أدخل موقع المفتاح. اضغط على Enter إذا كان المفتاح مخزناً في الموقع الافتراضي.
نسخ المفتاح العام
أصبح زوج مفاتيح SSH جاهزاً لتأمين الاتصالات عن بعد. لكي يقبل النظام البعيد مفتاح SSH للمصادقة، يجب أن يكون لديه نسخة من المفتاح العام. هناك طرق متعددة لنسخ المفتاح العام إلى الخادم البعيد.
-
استخدام ssh-copy-id
إن ssh-copy-id تأتي كجزء من حزمة OpenSSH. وهي الطريقة الافتراضية لنسخ مفتاح SSH العام. إنها بسيطة وسهلة الاستخدام. قم بتشغيل الأمر التالي لنقل نسخة من المفتاح العام:
|
1 |
ssh-copy-id <username>@<secondary_server_ip> |

تحتاج إلى كلمة مرور حساب المستخدم البعيد لإكمال العملية. إذا نجحت العملية، ستظهر رسالة نجاح.
-
استخدام اتصال SSH
إذا كان استخدام ssh-copy-id غير متاح ولكن يمكن للخادم الأساسي الاتصال بالخادم الثانوي باستخدام SSH، فيمكننا استخدام حيلة مختلفة لنسخ المفتاح. وهي تمرير محتوى المفتاح العام عبر أمر SSH إلى الطرف البعيد. لاحظ أنه إذا كان الدليل ~/.ssh غير موجود على النظام البعيد، فقد لا يعمل الأمر:
|
1 |
cat ~/.ssh/id_rsa.pub | ssh <username>@<secondary_server_ip> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" |
-
النسخ يدوياً
إذا لم يكن الاتصال عن بعد خياراً متاحاً، فإن العملية الوحيدة المتبقية هي إضافة المفتاح العام يدوياً إلى الخادم البعيد. أولاً، احصل على محتوى المفتاح العام:
|
1 |
cat ~/.ssh/id_rsa.pub |
على الخادم البعيد، ضع المفتاح في الموقع المناسب:
|
1 2 3 |
mkdir -pv ~/.ssh echo <public_key> >> ~/.ssh/authorized_مفاتيح |
استخدام SSH
الآن بعد أن تم إعداد المفتاح العام، أصبحنا جاهزين لاستخدام SSH للاتصال عن بُعد.
-
الاتصال بنظام عن بُعد
الخطوة الأولى هي تعلم كيفية الاتصال بالنظام البعيد باستخدام SSH. يفترض هذا أن كلا النظامين المحلي والبعيد يسمحان بمرور حركة مرور SSH. للاتصال بالنظام البعيد، اكتب ما يلي:
|
1 |
ssh <secondary_server_ip> |

للاتصال بمستخدم معين على الخادم البعيد، استخدم البنية التالية بدلاً من ذلك:
|
1 |
ssh <username>@<secondary_server_ip> |

إذا كانت هذه هي المرة الأولى التي تتصل فيها بالخادم، فقد يعرض SSH تحذيرًا. أدخل yes للمتابعة في الاتصال. إذا كان الحساب البعيد محميًا بكلمة مرور، فسيتعين عليك إدخال كلمة المرور. وإذا كان مفتاح SSH محميًا بعبارة مرور، فيجب عليك أيضًا إدخال عبارة المرور.
-
الاتصال بمنفذ مختلف
بشكل افتراضي، يعمل SSH على المنفذ 22. سيفترض عميل SSH قيمة المنفذ الافتراضية عند الاتصال بالنظام البعيد. ومع ذلك، إذا كان النظام البعيد يستمع إلى منفذ مختلف لحركة مرور SSH، فلن يعمل الاتصال. في مثل هذه الحالة، نحتاج إلى تحديد رقم المنفذ يدويًا. لتحديد المنفذ المعين، استخدم علامة -p :
|
1 |
ssh -p <port> <username>@<secondary_server_ip> |
إن تحديد المنفذ يدويًا في كل مرة أمر غير عملي. يمكننا تغيير قيمة المنفذ الافتراضية بشكل دائم. للقيام بذلك، افتح ملف تكوين SSH. إذا لم يكن الملف موجودًا، فسيقوم الأمر التالي بإنشائه:
|
1 |
nano ~/.ssh/config |
ثم أضف السطور التالية:
|
1 2 3 4 5 |
Host <remote_alias> HostName <remote_hostname> Port <port_value> |
-
تشغيل الأوامر على الخادم البعيد
الآن بعد أن تم إنشاء الاتصال، فإن أي أمر تقوم بتشغيله على الطرفية المحلية سينتقل إلى الخادم البعيد. وسيتم إرسال أي مخرجات يتم إنشاؤها إلى الطرفية المحلية.
إذا كان هناك أمر واحد فقط لتشغيله، فيمكننا تشغيله دون إجراء تسجيل دخول كامل عبر SSH. يمكننا ببساطة تحديد الأمر بعد تعليمات اتصال SSH:
|
1 |
ssh <username>@<secondary_server_ip> <command_to_run> |
-
إضافة مفتاح إلى وكيل SSH
إذا كان مفتاح SSH يحتوي على عبارة مرور، فستضطر في كل مرة تتصل فيها بالنظام البعيد إلى إدخال عبارة المرور. وتكرار ذلك أمر غير عملي. يمكننا السماح لوكيل SSH بتولي ذلك. وهو أداة مساعدة صغيرة تخزن المفتاح الخاص بعد إدخال عبارة المرور. سيكون المفتاح الخاص متاحًا أثناء جلسة الطرفية. لبدء تشغيل وكيل SSH، قم بتشغيل الأمر التالي:
|
1 |
eval $(ssh-agent) |

البرنامج يعمل في الخلفية. كل ما تحتاجه هو إضافة مفتاحك الخاص إلى الوكيل. قم بتشغيل الأمر التالي:
|
1 |
ssh-add |

أدخل عبارة المرور لإكمال العملية.
-
توجيه بيانات اعتماد SSH
يمكننا أيضًا تكوين SSH للاتصال من خادم إلى آخر بدون كلمة مرور. يمكن أن يكون هذا فعالاً للغاية، خاصة عند العمل مع العديد من الخوادم البعيدة. لتحقيق ذلك، نحتاج إلى توجيه بيانات اعتماد SSH. يتطلب توجيه بيانات اعتماد SSH تكوين الخادم البعيد لقبول الاتصال من الجهاز/الخادم المحلي. بعد ذلك، كل ما تحتاجه هو الاتصال بالخادم الأول باستخدام علامة -A . وهي تقوم بتوجيه بيانات اعتمادك إلى الخوادم للجلسة الحالية:
|
1 |
ssh -A <username>@<secondary_server_ip> |
تكوينات الخادم البعيد
يحتوي هذا القسم على بعض تكوينات جانب الخادم الشائعة لمساعدتك في تحسين استجابات الخادم وأمان الاتصال.
-
تعطيل مصادقة كلمة المرور
إذا تم تكوين مفاتيح SSH وكان اتصال SSH يعمل كما هو متوقع، فمن الآمن تعطيل مصادقة كلمة المرور. سيؤدي التكوين التالي إلى التوقف عن طلب كلمة مرور عندما يتصل أي مستخدم عبر SSH. على الخادم البعيد، افتح ملف sshd_config باستخدام root/sudo صلاحيات:
|
1 |
sudo nano /etc/ssh/sshd_config |
بعد ذلك، ابحث عن الإدخال PasswordAuthentication. إذا كان السطر معلقًا، فقم بإلغاء التعليق. قم بتغيير القيمة إلى no:
|
1 |
PasswordAuthentication no |

احفظ الملف وأغلق المحرر. لتطبيق التغييرات، أعد تشغيل خدمة SSH:
|
1 |
sudo service ssh restart |
إذا كان النظام هو CentOS/Fedora، فاستخدم الأمر التالي بدلاً من ذلك:
|
1 |
sudo service sshd restart |
-
تغيير منفذ SSH
كما ذكرنا سابقًا، يستخدم SSH المنفذ 22 لتبادل حركة مرور SSH. ومع ذلك، وفقًا لبعض مسؤولي النظام، من الأفضل تعيين منفذ مختلف لـ SSH. يمكن أن يساعد ذلك في الحماية من البوتات الآلية التي تغرق المنفذ. لتغيير المنفذ الذي يستمع إليه SSH، افتح ملف sshd_config :
|
1 |
sudo nano /etc/ssh/sshd_config |
ابحث عن الإدخال Port. إذا كان معلقًا، فقم بإلغاء التعليق. ثم قم بتغيير القيمة إلى قيمة مختلفة. قيمة المنفذ هي عدد صحيح غير موقع بحجم 16 بت (0-65535):
|
1 |
Port 1024 |

احفظ الملف وأغلق المحرر. لتطبيق التغيير، أعد تشغيل خدمة SSH:
|
1 |
sudo service ssh restart |
على نظام CentOS/Fedora، قم بتشغيل الأمر التالي بدلاً من ذلك:
|
1 |
sudo service sshd restart |
-
تحديد المستخدمين
يمكننا تكوين حسابات المستخدمين التي يمكنها الاتصال باستخدام SSH. يتضمن ذلك أيضًا تعديل ملف sshd_config . افتح الملف بصلاحيات sudo/root:
|
1 |
sudo nano /etc/ssh/sshd_config |
ابحث عن الإدخال AllowUsers. أضف المستخدمين المسموح لهم:
|
1 |
AllowUsers <user_1> <user_2> |

احفظ الملف وأغلق المحرر. أعد تشغيل خدمة SSH لتطبيق التغييرات:
|
1 |
sudo service ssh restart |
على نظام CentOS/Fedora، قم بتشغيل الأمر التالي بدلاً من ذلك:
|
1 |
sudo service sshd restart |
-
تحديد المجموعات
على غرار تحديد المستخدمين، يمكننا أيضًا تحديد مجموعة المستخدمين التي يمكنها الاتصال بالنظام باستخدام SSH. افتح ملف sshd_config :
|
1 |
sudo nano /etc/ssh/sshd_config |
استخدم الإدخال AllowGroups لإضافة مجموعة مستخدمين محددة يمكنها استخدام SSH:
|
1 |
AllowGroups <user_group> |

احفظ الملف وأغلق المحرر. أعد تشغيل خدمة SSH لتطبيق التغييرات:
|
1 |
sudo service ssh restart |
بالنسبة لنظام CentOS/Fedora، قم بتشغيل الأمر التالي بدلاً من ذلك:
|
1 |
sudo service sshd restart |
لاحظ أنه إذا تم إضافة أو إزالة أي مستخدم من مجموعة المستخدمين، فيجب إعادة تشغيل خدمة SSH. وإلا فلن تكون تغييرات المجموعة فعالة.
-
تعطيل تسجيل دخول root
إذا كان لديك وصول إلى مستخدم يتمتع بصلاحيات sudo، فمن المستحسن تعطيل تسجيل دخول root عبر SSH. افتح ملف sshd_config :
|
1 |
sudo nano /etc/ssh/sshd_config |
قم بتغيير قيمة الإدخال PermitRootLogin إلى no:
|
1 |
PermitRootLogin no |

احفظ الملف وأغلق المحرر. أعد تشغيل خدمة SSH لتطبيق التغيير:
|
1 |
sudo service ssh restart |
على نظام CentOS/Fedora، قم بتشغيل الأمر التالي بدلاً من ذلك:
|
1 |
sudo service sshd restart |
-
توجيه شاشات تطبيقات X
يمكن لخدمة SSH أيضًا توجيه عرض تطبيقات X من الخادم إلى العميل. ومع ذلك، لكي يعمل هذا، يجب أن يحتوي النظام البعيد على نظام نوافذ X مكون. يجب أيضًا تمكين الميزة من تكوين SSH. افتح ملف تكوين SSH:
|
1 |
sudo nano /etc/ssh/sshd_config |
قم بتغيير قيمة التوجيه X11Forwarding إلى yes:
|
1 |
X11Forwarding yes |

احفظ الملف وأغلق المحرر. أعد تشغيل خدمة SSH لتفعيل التغييرات:
|
1 |
sudo service ssh restart |
على CentOS/Fedora، قم بتشغيل الأمر التالي بدلاً من ذلك:
|
1 |
sudo service sshd restart |
تكوينات العميل
في هذا القسم، تعرف على بعض التكوينات الشائعة على عميل SSH.
-
معلومات الاتصال الخاصة بالخادم
على النظام المحلي، يمكننا تحديد تفاصيل الاتصال عن بُعد. يتم تخزين جميع المعلومات في ملف التكوين الموجود في ~/.ssh/config:
|
1 |
nano ~/.ssh/config |
يتم تمثيل كل كتلة نظام عن بُعد بالكلمة المفتاحية Host متبوعة باسم مستعار. تذهب جميع التوجيهات الخاصة بالنظام هنا. عند الاتصال بالنظام البعيد، سيقوم SSH بتطبيقها تلقائيًا. للحصول على شرح كامل ومفصل للتكوين، راجع صفحة الدليل (man page):
|
1 |
man ssh_config |

سيتبع إدخال الاتصال عن بُعد الهيكل التالي:
|
1 2 3 |
Host <remote_hostname> <directive> <value> |
-
مهلة الاتصال
قد تجد نفسك منفصلاً عن جلسات SSH قبل أن تكون مستعدًا لاتخاذ أي إجراء. إذا لم يرسل العميل أي حزمة إلى الخادم البعيد، فبعد مرور بعض الوقت، تنتهي مهلة الاتصال. لتجنب مثل هذه الظروف، يمكننا تكوين العميل المحلي لإرسال حزمة بين الحين والآخر للحفاظ على نشاط الاتصال.
افتح ملف التكوين المحلي:
|
1 |
nano ~/.ssh/config |
تحت إدخال الاتصال عن بُعد، أضف التوجيه ServerAliveInterval متبوعًا بالفترة الزمنية للحزمة بالثواني:
|
1 |
ServerAliveInterval 120 |

احفظ الملف وأغلق المحرر.
-
تعطيل التحقق من المضيف
بشكل افتراضي، كلما حاولت الاتصال بخادم جديد، سيقوم عميل SSH بالإبلاغ عن بصمة إصبع خدمة SSH البعيدة. إنها ميزة مفيدة للتحقق من موثوقية المضيف. إذا حاول جهة خبيثة انتحال صفة المضيف البعيد، فسيظهر كخادم جديد.
يمكن أن يشكل تعطيل هذه الميزة خطرًا أمنيًا كبيرًا. بشكل عام، يوصى بإبقاء هذا الخيار قيد التشغيل. ومع ذلك، في بعض الحالات، قد يكون تعطيل التحقق من المضيف أمرًا مريحًا. افتح ملف التكوين:
|
1 |
nano ~/.ssh/config |
تحت قسم المضيف البعيد، أضف التوجيهات التالية:

|
1 2 3 |
StrictHostKeyChecking no UserKnownHostsFile /dev/null |
سيقوم التوجيه الأول بتعطيل إضافة مضيفين جدد تلقائيًا إلى قائمة المضيفين المعروفين، المخزنة في ملف known_hosts. التوجيه الثاني هو عدم التحذير من أي تغييرات. احفظ الملف وأغلق المحرر.
-
مضاعفة إرسال SSH عبر اتصال TCP واحد
في بعض الأحيان، قد يتطلب إنشاء اتصال TCP وقتًا طويلاً. إذا كان من الضروري إجراء اتصالات متعددة بنفس الجهاز، فإن مضاعفة الإرسال (multiplexing) هي ميزة رائعة يمكنك الاستفادة منها. تتيح مضاعفة إرسال SSH استخدام نفس اتصال TCP لجلسات SSH متعددة. وهي تقلل من بعض أعباء العمل المطلوبة لإنشاء جلسات جديدة. قد يساعد أيضًا تحديد عدد الاتصالات.
يمكننا إعداد اتصال مضاعف يدويًا أو السماح لـ SSH باستخدامه كلما كان متاحًا. هنا، سنقوم بتكوين SSH لاتباع المسار الثاني. افتح ملف تكوين SSH:
|
1 |
nano ~/.ssh/config |
أضف تعريف مضيف عام (wildcard) في الجزء العلوي من الملف. يضمن ذلك تطبيق المجموعة التالية من التوجيهات على جميع الاتصالات عن بُعد. أضف التوجيهات التالية:
|
1 2 3 4 5 |
ControlMaster auto ControlPath ~/.ssh/multiplex/%r@%h:%p ControlPersist 1 |

يخبر التوجيه الأول SSH باستخدام مضاعفة الإرسال تلقائيًا كلما كانت متاحة. يحدد التوجيه الثاني المسار إلى مقبس التحكم (control socket). سيتم إنشاء هذا المقبس عند إنشاء الجلسة الأولى. ستتبع الجلسات اللاحقة هذا المقبس.
يخبر التوجيه الأخير SSH بالسماح للاتصال الرئيسي الأولي بأن يكون في الخلفية. كما أنه يشير إلى أن اتصالات TCP ستنتهي تلقائيًا بعد ثانية واحدة من آخر جلسة SSH. بعد ذلك، قم بإنشاء الدليل الذي أعلنا عنه في ملف التكوين:
|
1 |
mkdir -pv ~/.ssh/multiplex |
أخيرًا، يجب أن يكون التجميع (multiplexing) نشطًا.
رموز الهروب لـ SSH
بعد إنشاء الاتصال، هناك طرق للتحكم في سلوك الاتصال باستخدام رموز الهروب.
-
فرض قطع الاتصال
هل أنت عالق في جلسة SSH؟ تتم إدارة جلسات SSH عمومًا بواسطة الخادم. إذا كان الخادم يواجه مشكلات، فإن العلوق في جلسة SSH ميتة قد يكون أمرًا محبطًا. لحسن الحظ، يوفر OpenSSH عناصر تحكم مفيدة لإدارة حالة الاتصال من جانب العميل.
اضغط على Enter مرتين. ثم أدخل الأمر التالي:
|
1 |
~. |
![]()
هنا، ~ هو حرف التحكم. بعد تشغيل هذا الأمر من العميل، يجب أن يُغلق الاتصال على الفور.
-
جلسة SSH في الخلفية
يمكننا أيضًا وضع جلسة SSH في الخلفية. عند وضعها في الخلفية، ستعود إلى جلسة shell العادية. بمجرد انتهاء عملك، يمكنك العودة إلى shell الخاص بـ SSH مرة أخرى. لاحظ أنه يجب أن يكون لديك تكوين مهلة مناسب لتجنب انتهاء المهلة أثناء بقاء جلسة SSH في الخلفية. لوضع جلسة SSH في الخلفية، أدخل حرف التحكم متبوعًا بـ Ctrl + Z:
|
1 |
~<Ctrl + Z> |

إذا كانت هذه هي أحدث مهمة خلفية لك، فيمكنك إعادة تنشيطها باستخدام الأمر التالي:
|
1 |
fg |
إذا كان هناك العديد من المهام في الخلفية، فيمكننا تحديدها من قائمة الوظائف:
|
1 |
jobs |

لجلب الوظيفة المستهدفة إلى المقدمة، لاحظ قيمة الوظيفة من العمود الأول. ثم قم بتشغيل الأمر التالي:
|
1 |
fg %<job_value> |
-
تغيير تكوين إعادة توجيه المنفذ
باستخدام آلية التحكم، يمكننا تغيير قواعد إعادة توجيه المنفذ على الفور. بمجرد إنشاء الاتصال، يمكننا إنشاء قواعد إعادة توجيه المنفذ أو إلغاؤها. إنها جزء من واجهة سطر أوامر SSH.
للوصول إلى واجهة سطر أوامر SSH، قم بتشغيل الأمر:
|
1 |
~C |
![]()
لسرد الخيارات المتاحة، أدخل الأمر التالي:
|
1 |
-h |
إذا كان المخرج مقتضبًا للغاية، فحاول زيادة مستوى التفصيل باستخدام أمر التحكم التالي:
|
1 |
~v |
الآن، قم بتشغيل الأمر -h مجددًا:
|
1 |
-h |

كما يوضح المخرج، من السهل جدًا تنفيذ أي من عمليات إعادة توجيه المنافذ بأمر بسيط. على سبيل المثال، يمكن أيضًا تدمير النفق باستخدام أمر الإنهاء (kill)، والمشار إليه بـ K في قائمة الأوامر.
أفكار نهائية
من الشائع جدًا مواجهة SSH. لهذا السبب يعد تعلم SSH مفيدًا للغاية. تغطي نظرتنا الشاملة لـ SSH أهم تكوينات SSH التي يحتاج المستخدمون إلى معرفتها لاستخدام SSH بشكل يومي. بمجرد إتقانها، يجب أن تكون قادرًا على العمل مع جميع تكوينات خادم SSH تقريبًا.
حوسبة سعيدة!
التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.