5 طرق للحفاظ على جلسات وعمليات SSH عن بعد قيد التشغيل بعد قطع الاتصال

instagram story viewer

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

استمر في تشغيل جلسات SSH بعد قطع الاتصال
5 طرق للحفاظ على جلسات SSH قيد التشغيل بعد قطع الاتصال

عندما نقوم بتسجيل الخروج من الجلسة أو انتهاء مهلة الجلسة بعد الخمول لبعض الوقت ، فإن ملف تنفس الصعداء حتى يتم إرسال الإشارة إلى المحطة الزائفة وجميع الوظائف التي تم تشغيلها على هذا الجهاز ، حتى الوظائف التي تحتوي على يتم أيضًا إرسال إشارة SIGHUP إلى وظائفهم الأصلية التي يتم بدء تشغيلها على المحطة الزائفة ويتم إجبارهم على الإنهاء.

لا تفوت:5 ممارسات مفيدة للحفاظ على خادم SSH آمنًا ومحميًا

فقط الوظائف التي تم تكوينها لتجاهل هذه الإشارة هي تلك التي تنجو من إنهاء الجلسة. في أنظمة Linux ، يمكن أن يكون لدينا العديد من الطرق لجعل هذه المهام تعمل على الخادم البعيد أو أي جهاز حتى بعد تسجيل خروج المستخدم وإنهاء الجلسة.

افهم العمليات على Linux

عملية عادية

العمليات الطبيعية هي تلك التي لها عمر الجلسة. لقد بدأت أثناء الجلسة كعمليات تمهيدية وتنتهي في فترة زمنية معينة أو عندما يتم تسجيل خروج الجلسة. هذه العمليات لها مالكها كأي مستخدم صالح للنظام ، بما في ذلك الجذر.

عملية اليتيم

العمليات اليتيمة هي تلك التي كان لها في البداية أحد الوالدين الذي أنشأ العملية ولكن بعد مرور بعض الوقت ، ماتت العملية الأبوية أو تعطلت عن غير قصد ، مما يجعل init هي الأصل لهذه العملية. بدأت مثل هذه العمليات كوالدها المباشر الذي ينتظر هذه العمليات حتى تموت أو ينتهي بها الأمر.

عملية الخفي

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

تقنيات للحفاظ على جلسة SSH قيد التشغيل بعد قطع الاتصال

يمكن أن تكون هناك طرق مختلفة لترك جلسات ssh قيد التشغيل بعد انقطاع الاتصال كما هو موضح أدناه:

1. استخدام أمر الشاشة للاستمرار في تشغيل جلسات SSH

شاشة هو Window Manager نصي لنظام Linux يسمح للمستخدم بإدارة جلسات طرفية متعددة في نفس الوقت ، والتبديل بين الجلسات ، وتسجيل الجلسة لـ تشغيل الجلسات على الشاشة ، وحتى استئناف الجلسة في أي وقت نرغب فيه دون القلق بشأن تسجيل الخروج أو إغلاق المحطة.

يمكن بدء جلسات الشاشة ثم فصلها عن جهاز التحكم وتركها تعمل في الخلفية ثم استئنافها في أي وقت وحتى في أي مكان. ما عليك سوى أن تبدأ جلستك على الشاشة وعندما تريد ، قم بفصلها عن الطرفية الزائفة (أو الطرفية المتحكمة) وتسجيل الخروج. عندما تشعر ، يمكنك إعادة تسجيل الدخول واستئناف الجلسة.

بدء جلسة الشاشة

بعد الكتابة 'شاشة' الأمر ، سوف تكون في جلسة شاشة جديدة ، خلال هذه الجلسة يمكنك إنشاء نوافذ جديدة ، والتنقل بين النوافذ ، وقفل الشاشة ، والقيام بالعديد من الأشياء التي يمكنك القيام بها على محطة عادية.

شاشة $. 
بدء جلسة الشاشة في Linux
بدء جلسة الشاشة في Linux

بمجرد بدء جلسة الشاشة ، يمكنك تشغيل أي أمر والحفاظ على تشغيل الجلسة عن طريق فصل الجلسة.

قم بتشغيل الأوامر في جلسة الشاشة
قم بتشغيل الأوامر في جلسة الشاشة
فصل الشاشة

فقط عندما تريد تسجيل الخروج من الجلسة البعيدة ، لكنك تريد الاحتفاظ بالجلسة التي أنشأتها على هذا الجهاز على قيد الحياة ، فما عليك فعله هو فصل الشاشة عن الجهاز بحيث لا تحتوي على طرف تحكم متبقى. بعد القيام بذلك ، يمكنك تسجيل الخروج بأمان.

لفصل شاشة عن المحطة الطرفية البعيدة ، فقط اضغط "Ctrl + a" تليها على الفور "د" وستعود إلى المحطة برؤية رسالة مفادها أن الشاشة مفصولة. يمكنك الآن تسجيل الخروج بأمان وستبقى جلستك على قيد الحياة.

فصل جلسة شاشة لينكس
فصل جلسة شاشة لينكس
استئناف جلسة الشاشة المنفصلة

إذا كنت ترغب في استئناف جلسة شاشة منفصلة تركتها قبل تسجيل الخروج ، فما عليك سوى إعادة تسجيل الدخول إلى الجهاز البعيد مرة أخرى واكتب "شاشة -r" في حالة فتح شاشة واحدة فقط ، وإذا تم فتح جلسات شاشة متعددة ، فقم بتشغيلها "شاشة -r .

شاشة $ -r. شاشة $ -r 
استئناف جلسة الشاشة المنفصلة
استئناف جلسة الشاشة المنفصلة

لمعرفة المزيد حول أمر الشاشة وكيفية استخدامه ، ما عليك سوى اتباع الرابط: استخدم أمر الشاشة لإدارة جلسات Linux Terminal

2. استخدام Tmux (Terminal Multiplexer) للاستمرار في تشغيل جلسات SSH

تمكس هو برنامج آخر تم إنشاؤه ليكون بديلاً عن شاشة. لديها معظم قدرات شاشة، مع القليل من الإمكانات الإضافية التي تجعله أقوى من الشاشة.

يسمح ، بصرف النظر عن جميع الخيارات التي توفرها الشاشة ، بتقسيم الألواح أفقيًا أو رأسيًا بينها نوافذ متعددة ، تغيير حجم أجزاء النافذة ، مراقبة نشاط الجلسة ، البرمجة النصية باستخدام وضع سطر الأوامر إلخ. نظرًا لهذه الميزات الخاصة بـ tmux ، فقد تم اعتمادها على نطاق واسع من قبل جميع توزيعات Unix تقريبًا وحتى تم تضمينها في النظام الأساسي لـ OpenBSD.

ابدأ جلسة Tmux

بعد عمل ssh على المضيف البعيد والكتابة تمكس، ستدخل في جلسة جديدة مع فتح نافذة جديدة أمامك ، حيث يمكنك القيام بأي شيء تفعله على الجهاز العادي.

$ تمكس. 
ابدأ جلسة tmux Terminal
ابدأ جلسة tmux Terminal

بعد إجراء العمليات الخاصة بك على الجهاز ، يمكنك فصل تلك الجلسة من محطة التحكم بحيث تنتقل إلى الخلفية ويمكنك تسجيل الخروج بأمان.

نفذ أوامر Linux في جلسة Tmux
نفذ أوامر Linux في جلسة Tmux
افصل جلسة Tmux من الجهاز

إما يمكنك الركض "فصل tmux" عند تشغيل جلسة tmux أو يمكنك استخدام الاختصار (Ctrl + b ثم d). بعد ذلك سيتم فصل جلستك الحالية وستعود إلى جهازك الطرفي حيث يمكنك تسجيل الخروج بأمان.

فصل tmux $. 
فصل جلسة Tmux في Linux
فصل جلسة Tmux في Linux
استئناف جلسة Tmux المغلقة

لإعادة فتح الجلسة التي قمت بفصلها وتركها كما هي عند تسجيل الخروج من النظام ، ما عليك سوى إعادة تسجيل الدخول إلى الجهاز البعيد واكتب "إرفاق tmux" لإعادة الاتصال بالجلسة المغلقة وستظل موجودة وعاملة.

إرفاق $ tmux. 
استئناف جلسة Tmux المغلقة
استئناف جلسة Tmux المغلقة

لمعرفة المزيد حول tmux وكيفية استخدامه ، ما عليك سوى اتباع الرابط: استخدم Tmux Terminal Multiplexer لإدارة محطات Linux المتعددة.

3. استخدام أمر nohup للاستمرار في تشغيل جلسات SSH

إذا لم تكن معتادًا على ذلك شاشة أو تمكس، يمكنك استخدام nohup وأرسل أمر التشغيل الطويل إلى الخلفية بحيث يمكنك المتابعة بينما يستمر تنفيذ الأمر في الخلفية. بعد ذلك يمكنك تسجيل الخروج بأمان.

باستخدام أمر nohup ، نطلب من العملية تجاهل ملف تنفس الصعداء حتى التي يتم إرسالها عن طريق جلسة ssh عند الإنهاء ، مما يجعل الأمر يستمر حتى بعد تسجيل الخروج من الجلسة. عند تسجيل الخروج من الجلسة ، يتم فصل الأمر عن التحكم في الجهاز الطرفي ويستمر في العمل في الخلفية كعملية خفية.

تنفيذ الأمر باستخدام nohup في الخلفية

هنا ، هو سيناريو بسيط قمنا فيه بالركض اعثر على الأمر للبحث عن الملفات في الخلفية في جلسة ssh باستخدام nohup ، وبعد ذلك تم إرسال المهمة إلى الخلفية مع العودة الفورية للعطاء PID والعمل بطاقة تعريف من العملية ([JOBID] PID).

# nohup اعثر / -type f $ gt؛ files_in_system.out 2> 1 &
قم بتشغيل Linux Command في الخلفية
قم بتشغيل Linux Command في الخلفية
استئناف الجلسة لعرض ما إذا كانت الوظيفة لا تزال قيد التشغيل

عند إعادة تسجيل الدخول مرة أخرى ، يمكنك التحقق من حالة الأمر وإعادته إلى المقدمة باستخدام "fg٪ JOBID" لرصد تقدمه وما إلى ذلك. أدناه ، يوضح الإخراج أن المهمة قد اكتملت لأنها لا تظهر عند إعادة تسجيل الدخول ، وقد أعطت المخرجات التي يتم عرضها.

# fg٪ JOBID. 
قم بتشغيل Linux Command في الخلفية
قم بتشغيل Linux Command في الخلفية

4. استخدام الأمر disown للحفاظ على تشغيل جلسات SSH

هناك طريقة أخرى أنيقة للسماح بتشغيل أمرك أو مهمة واحدة في الخلفية والبقاء على قيد الحياة حتى بعد تسجيل الخروج من الجلسة أو فصلها عن طريق استخدام تبرأ من.

تبرأ من، يزيل الوظيفة من قائمة مهام العملية الخاصة بالنظام ، لذلك يتم حماية العملية من التعرض للقتل أثناء فصل الجلسة حيث لن يتم تلقيها تنفس الصعداء حتى بالصدفة عند تسجيل الخروج.

عيب هذه الطريقة هو أنه يجب استخدامها فقط للوظائف التي لا تحتاج إلى أي مدخلات من ستدين ولا حاجة للكتابة إليه stdout، إلا إذا قمت بإعادة توجيه مدخلات ومخرجات الوظائف على وجه التحديد ، لأنه عندما تحاول الوظيفة التفاعل معها ستدين أو stdout، سوف يتوقف.

تنفيذ الأمر باستخدام disown في الخلفية

أدناه ، أرسلنا بينغ الأمر إلى الخلفية بحيث يستمر تشغيل ut وإزالته من قائمة الوظائف. كما رأينا ، تم تعليق الوظيفة لأول مرة ، وبعد ذلك ظلت في قائمة الوظائف كـ معرف العملية: 15368.

$ ping tecmint.com> pingout & وظائف $ -l. $ disown -h٪ 1. $ ps -ef | grep بينغ.
قم بتشغيل أوامر Linux باستخدام Disown
قم بتشغيل أوامر Linux باستخدام Disown

بعد أن تم تمرير إشارة التنصل إلى الوظيفة ، وتمت إزالتها من قائمة الوظائف ، على الرغم من أنها كانت لا تزال تعمل في الخلفية. ستظل الوظيفة قيد التشغيل عندما تقوم بإعادة تسجيل الدخول إلى الخادم البعيد كما هو موضح أدناه.

$ ps -ef | grep بينغ. 
تحقق من حالة الوظيفة
تحقق من حالة الوظيفة

5. استخدام الأمر سيتسيد لتشغيل جلسات SSH

فائدة أخرى لتحقيق السلوك المطلوب مجموعات. نوهوب له عيب بمعنى أن مجموعة العملية للعملية تظل كما هي ، لذا فإن العملية التي تعمل باستخدام nohup تكون عرضة لأي إشارة يتم إرسالها إلى مجموعة العملية بأكملها (مثل Ctrl + C).

مجموعات من ناحية أخرى ، يخصص مجموعة عملية جديدة للعملية التي يتم تنفيذها ، وبالتالي ، فإن العملية التي تم إنشاؤها هي بالكامل في مجموعة عمليات مخصصة حديثًا ويمكن تنفيذها بأمان دون خوف من التعرض للقتل حتى بعد الجلسة تسجيل خروج.

نفذ أي أمر باستخدام سيتسيد

هنا يظهر أن العملية "النوم 10 م" تم فصله من طرف التحكم منذ وقت إنشائه.

النوم عند الصغر 10 مليون دولار. $ ps -ef | النوم grep. 
قم بتشغيل أمر Linux باستخدام Setsid
قم بتشغيل أمر Linux باستخدام Setsid

الآن ، عندما تعيد تسجيل الدخول إلى الجلسة ، ستظل تجد هذه العملية قيد التشغيل.

$ ps -ef | grep [s] leep. 
تشغيل عملية Linux الخلفية
تشغيل عملية Linux الخلفية

استنتاج

ما هي الطرق التي يمكنك التفكير بها للحفاظ على سير العملية حتى بعد تسجيل الخروج من جلسة SSH؟ إذا كان هناك أي طريقة أخرى فعالة يمكنك التفكير فيها ، فاذكرها في تعليقاتك.

Teachs.ru