كيفيّة منع SSH من فصل الجلسات: دليل شامل لحل مشكلة انقطاع الاتصال عبر SSH
تُعدُّ خدمة SSH (Secure Shell) واحدة من الأدوات الأساسية التي يعتمد عليها المحترفون في إدارة الخوادم عن بُعد. ومع ذلك، يواجه العديد من المستخدمين مشكلة انقطاع الجلسات عند الاتصال بخوادم عبر SSH، سواء كان ذلك بسبب مرور فترة من الوقت أو انقطاع الشبكة أو الأسباب التقنية الأخرى. قد تكون هذه المشكلة مزعجة للغاية، خصوصاً إذا كنت تقوم بتنفيذ مهام طويلة الأمد أو ترغب في الحفاظ على الجلسة مفتوحة لفترة زمنية طويلة. في هذا المقال، سوف نعرض طرقًا مفصّلة لمنع SSH من فصل الجلسات، مع شرح الأسباب المحتملة وكيفية معالجتها.
1. الأسباب الشائعة لانقطاع الجلسات في SSH
قبل أن نتناول الحلول، من المهم أن نفهم الأسباب المحتملة التي تؤدي إلى قطع الجلسات عبر SSH. تشمل هذه الأسباب:
-
إعدادات الخادم (Server-side Settings): قد تكون الخوادم مُعدَّة للإغلاق التلقائي للجلسات في حال لم يتم إرسال أي نشاط لفترة معينة.
-
إعدادات العميل (Client-side Settings): يمكن أن تكون إعدادات العميل هي السبب في انقطاع الاتصال، خاصةً في حال كانت هناك قيود على الوقت.
-
مشكلات الشبكة: قد يحدث انقطاع الاتصال بسبب انقطاع الشبكة أو مشاكل في الاتصال بين العميل والخادم.
-
إعدادات نظام التشغيل: قد تكون بعض الأنظمة تحتوي على إعدادات تجعلها تقوم بإغلاق الجلسات بعد فترة من عدم النشاط.
2. الحلول الممكنة لمنع فصل الجلسات عبر SSH
2.1 تعديل إعدادات الخادم
إحدى الطرق الأكثر شيوعًا لحل مشكلة فصل الجلسات عبر SSH هي تعديل إعدادات الخادم. يمكن للمسؤول عن الخادم تغيير بعض القيم في ملف إعدادات SSH بحيث يظل الاتصال مفتوحًا لفترة طويلة أو إلى أجل غير مسمى.
-
زيادة مدة انقضاء الجلسات:
في خوادم Linux، يمكن تعديل إعدادات الجلسة الخاصة بـ SSH عبر تحرير ملف الإعدادات/etc/ssh/sshd_config. للقيام بذلك، اتبع الخطوات التالية:-
افتح ملف الإعدادات باستخدام محرر نصوص مثل
nanoأوvim:bashsudo nano /etc/ssh/sshd_config -
ابحث عن السطر الذي يحتوي على
ClientAliveInterval. إذا كان مفقودًا، يمكنك إضافته. هذه القيمة تمثل المدة الزمنية (بالثواني) التي ينتظرها الخادم قبل أن يرسل رسالة اختبار إلى العميل. على سبيل المثال:nginxClientAliveInterval 60سيؤدي ذلك إلى إرسال رسالة اختبار كل دقيقة.
-
قم بتعديل قيمة
ClientAliveCountMax، التي تحدد عدد مرات إرسال رسالة الاختبار قبل أن يقوم الخادم بفصل الاتصال. لتجنب انقطاع الاتصال، يمكنك تعيين هذه القيمة إلى 0:nginxClientAliveCountMax 0 -
احفظ التغييرات واخرج من المحرر، ثم أعد تشغيل خدمة SSH لتطبيق التغييرات:
nginxsudo systemctl restart sshd
-
2.2 تعديل إعدادات العميل
إعدادات العميل لها تأثير كبير أيضًا في كيفية تعامل SSH مع الجلسات البعيدة. لحل مشكلة الانقطاع على مستوى العميل، يمكن تعديل ملف الإعدادات ~/.ssh/config في جهاز العميل:
-
افتح ملف الإعدادات باستخدام محرر النصوص:
arduinonano ~/.ssh/config -
إذا لم يكن هذا الملف موجودًا، يمكنك إنشاؤه. أضف السطر التالي إلى الملف:
nginxServerAliveInterval 60هذا السطر يحدد إرسال رسالة اختبار من العميل إلى الخادم كل 60 ثانية.
-
لتحديد عدد المحاولات التي يجب على العميل القيام بها قبل إغلاق الجلسة، يمكن تعديل السطر التالي:
nginxServerAliveCountMax 3هذا يعني أنه بعد إرسال 3 محاولات اختبار دون استجابة من الخادم، سيقوم العميل بفصل الاتصال.
-
احفظ التغييرات وأغلق الملف. هذه التعديلات ستحل مشكلة فصل الجلسات على مستوى العميل.
2.3 استخدام “tmux” أو “screen”
في بعض الأحيان، حتى مع تعديل الإعدادات، قد يظل الاتصال ينقطع بسبب مشاكل الشبكة أو أي انقطاع مؤقت. في هذه الحالة، يمكن استخدام أدوات مثل tmux أو screen لفتح جلسات معزولة (sessions) يمكن أن تظل تعمل في الخلفية حتى بعد انقطاع الاتصال. إليك كيفية استخدام هذه الأدوات:
-
tmux:
-
قم بتثبيت
tmux(إذا لم يكن مثبتًا بالفعل) عبر الأمر:nginxsudo apt install tmux -
قم ببدء جلسة جديدة باستخدام:
nginxtmux -
يمكنك الآن فتح نافذة جديدة أو تنفيذ الأوامر المطلوبة. إذا انقطع الاتصال، يمكنك إعادة الاتصال بالجهاز والوصول إلى نفس الجلسة عبر:
arduinotmux attach -
لإغلاق الجلسة، اكتب:
bashexit
-
-
screen:
-
لتثبيت
screenعلى خادم Linux، استخدم الأمر:nginxsudo apt install screen -
بدء جلسة جديدة باستخدام:
nginxscreen -
لتنفيذ الأوامر داخل الجلسة، وإذا انقطع الاتصال، يمكنك العودة إلى نفس الجلسة عبر:
nginxscreen -r -
لإنهاء الجلسة:
bashexit
-
تعتبر كل من tmux و screen حلولًا قوية لضمان استمرارية الجلسات حتى في حال حدوث انقطاع مفاجئ.
2.4 تعديل إعدادات الشبكة
في بعض الأحيان، قد يكون انقطاع الاتصال ناتجًا عن مشاكل في الشبكة أو عن اتصال الإنترنت غير المستقر. يمكن اتخاذ بعض الإجراءات لتقليل احتمال حدوث انقطاع:
-
إيقاف إعدادات الوكيل (Proxy Settings): تأكد من أن أي إعدادات وكيل على العميل أو الخادم لا تتسبب في انقطاع الاتصال.
-
استخدام اتصال ثابت: إذا كنت تعتمد على اتصال إنترنت غير مستقر أو شبكات Wi-Fi، حاول استخدام اتصال سلكي ثابت للحصول على تجربة أكثر استقرارًا.
-
إعدادات جهاز التوجيه (Router): قد تكون أجهزة التوجيه (Routers) تحد من مدة الاتصال أو تعيد تعيين الجلسات تلقائيًا. تأكد من تعديل الإعدادات داخل جهاز التوجيه بحيث لا يتم قطع الاتصال بعد فترة معينة من عدم النشاط.
2.5 تأكد من عدم وجود مشاكل في الخادم
في بعض الأحيان قد تكون هناك مشاكل في الخادم نفسه تؤدي إلى انقطاع الجلسات. إليك بعض النصائح التي يمكن أن تساعد في تشخيص المشاكل:
-
التحقق من سجلات النظام:
قم بمراجعة السجلات في/var/log/auth.logللتحقق مما إذا كانت هناك رسائل متعلقة بمشاكل في الاتصال عبر SSH. -
موارد النظام:
تأكد من أن الخادم يحتوي على موارد كافية (ذاكرة، وحدة المعالجة المركزية، إلخ) للعمل بشكل صحيح. قد تؤدي الموارد غير الكافية إلى انقطاع الجلسات أو التأثير على الأداء.
3. استنتاج
في النهاية، يمكن تجنب انقطاع جلسات SSH باستخدام مجموعة من الحلول التقنية البسيطة والمباشرة. من خلال تعديل إعدادات الخادم والعميل، واستخدام أدوات مثل tmux أو screen، وكذلك مراعاة مشاكل الشبكة، يمكنك تحسين استقرار اتصالك والحفاظ على الجلسات المفتوحة لفترات طويلة دون انقطاع. هذه الحلول هي خطوات فعالة لمنع حدوث انقطاع غير مرغوب فيه، مما يجعل عملية إدارة الخوادم عن بُعد أكثر سلاسة وفعالية.

