
إذا كان عملك يتطلب الاحتفاظ بالكثير من جلسات SSH على خوادم مختلفة ، فربما تعرف كيف تنقطع بسهولة عند التبديل إلى شبكة Wi-Fi أخرى أو عند فقد الإنترنت مؤقتًا. ولكن ماذا لو قلت لك إن جميع هذه المشاكل قد تم حلها منذ فترة طويلة ويمكنك أن تنسى الجلسات المعطلة وإعادة الاتصال المستمر؟
عند فتح غطاء الكمبيوتر المحمول ، يمكن الوصول إلى جميع جلسات SSH الخاصة بي على الفور وفي نفس الحالة التي تركتها فيها. توضح هذه المقالة كيفية تكوين خادم طرفي لمسؤول النظام. يتيح لك استخدام مثل هذا الخادم نسيان جلسات SSH المعطلة وإعادة الاتصال وإدخال كلمات المرور باستمرار.
إعداد الخادم
الفكرة بسيطة وموضحة بوضوح في الصورة في عنوان المنشور: سنحتفظ بجميع اتصالات SSH على خادم طرفي خاص. سيكون هذا الخادم نقطة دخولنا لإدارة الخوادم الأخرى. في الوقت نفسه ، لا تحتاج الخوادم الطرفية إلى تكوين أو تثبيت برامج إضافية.
يعد أي تكوين تقريبًا مناسبًا لخادم المحطة الطرفية ، ولكن من الأفضل أن يكون لديك ذاكرة وصول عشوائي (RAM) أكبر لتخزين سجل وحدة التحكم داخل كل جلسة ولكي تكون قادرًا على التمرير لأعلى المحفوظات في أي وقت ومشاهدة ما قمت به على خادم الجلسة قبل شهر. عادة ما تكون 1-2 جيجابايت من الذاكرة كافية.
اختيار التوزيع
في الخادم الطرفي ، فإن أهم شيء هو الجهوزية ، لأنه كلما قل عدد مرات إعادة التشغيل ، زادت جلسات SSH الخاصة بنا. لذلك ، نختار توزيع LTS (الدعم طويل الأجل) الأكثر تحفظًا ، على سبيل المثال ، فرع دبيان أو أوبونتو المستقر. نحن نقوم بتكوين التحديثات التلقائية (الترقيات غير المراقبة) بحيث لا تعد إعادة التشغيل المفاجئة للبرامج مفاجأة.
إعداد خادم SSH
نظرًا لأن الخادم الطرفي سيفتح الوصول إلى جميع خوادمنا في وقت واحد ، فسيكون من الآمن تأمينها. للقيام بذلك ، نحظر المصادقة باستخدام كلمات المرور ، ولا نترك الوصول إلا بالمفاتيح ، ونحظر أيضًا تسجيل الدخول كجذر.
تحتاج أولاً إلى إنشاء مستخدم جديد في النظام.
/ etc / ssh / sshd_config.....
هذا التكوين كافٍ تمامًا للحماية من التعداد الضخم لكلمات المرور ، لأن خادم SSH سوف يغلق الاتصال ببساطة عند محاولة تسجيل الدخول باستخدام كلمة مرور. حتى مع وجود عدد كبير من الاتصالات ، سيتم إغلاقها بسرعة كافية دون إنشاء حمل كبير على الخادم. في رأيي ، مع هذا التكوين ، ليست هناك حاجة لتثبيت ميزات أمان إضافية مثل fail2ban.
غالبًا ما تنصح المسؤولين الإداريين في أدلةهم بتغيير منفذ SSH وتثبيت نوع غير قياسي مثل 2222 بدلاً من 22 . في رأيي ، هذه ممارسة سيئة لا تضيف أي أمان.
- لن يسمح لك ذلك بحماية نفسك من تكسير كلمة المرور ، حيث ستظل الماسحات الضوئية التلقائية تجد SSH على أي منفذ وتبدأ في المطرقة.
- هذا يجعل الفوضى إذا كان العديد من الأشخاص يديرون النظام ويخترع كل منهم موانئه الخاصة. عندما يكون هناك العشرات من هذه الأنظمة ، عليك أن تبحث عن الماسح الضوئي الذي يوجد عليه منفذ SSH مخفي هذه المرة.
- هذا يكسر قيود الأمان المضمنة في البرامج. على سبيل المثال ، لن تتصل متصفحات الويب بالمنفذ 22 إذا حددتها بشكل صريح في HTTP ، ولكن في نفس الوقت تتصل بمنفذ آخر غير قياسي. يمكن استخدام هذا لتشغيل أنظمة IDo / IPS DDoS.
Tmux - نافذة واحدة لحكم جميع
Tmux هو برنامج مناسب بشكل لا يصدق لإدارة المحطات الافتراضية ، والتي بدونها لا أستطيع تخيل عملي. في البداية ، يبدو الأمر مُربكًا ومعقدًا ، ولكن إذا تغلبت على نفسك وتعلمت كيفية استخدامه ، فلن تتمكن من رفضه بعد الآن.
بالنسبة لأولئك الذين لا يعرفون ما هو tmux ، تخيل مستعرض ويب مبوب ، ولكن بدلاً من المواقع توجد جلسات وحدة التحكم. يمكنك فتح عدد لا حصر له من علامات التبويب وفي كل علامة تبويب تشغيل البرنامج. في الوقت نفسه ، يتم تشغيله على الخادم ، ويمكنك قطع الاتصال به في أي وقت ، بينما ستبقى جميع علامات التبويب والبرامج قيد التشغيل في مكانها ويمكنك العودة إليها.
قم بتثبيت tmux إذا لم يكن مثبتًا بالفعل:
apt install tmux
في مصطلحات tmux ، تسمى مجموعة منفصلة من النوافذ جلسة. سنستخدم جلسة واحدة فقط بشكل افتراضي ، وبالتالي لن نستخدم أسماء الجلسة على الإطلاق. ولكن من المهم أن نعرف أنه يمكن أن يكون هناك أكثر من واحد إذا لزم الأمر.
إنشاء جلسة جديدة:
tmux new
في هذه اللحظة ، أنشأنا جلسة جديدة مع نافذة واحدة ومتصلة بها على الفور. يمكنك رؤية شريط الحالة الأخضر الذي يظهر أدناه. هذا شيء يشبه شريط كلفه في المتصفح. سيعرض علامة التبويب الحالية والمجاورة ، وكذلك رسائل الخدمة.
يعرض شريط الحالة tmux أسماء (علامة تبويب) النافذةفي هذه المرحلة ، حتى إذا أغلقنا اتصال SSH وأعدنا الاتصال بالخادم ، فستظل جلسة tmux قيد التشغيل في نفس الحالة ، جنبًا إلى جنب مع جميع البرامج قيد التشغيل ، كما لو أننا قمنا بتقليلها. دعونا نحاول تشغيل البرنامج
العلوي داخل جلسة tmux وقطع الاتصال به. من أجل الوضوح ، أغلق النافذة الطرفية تمامًا وأعد الاتصال بالخادم.
بعد إعادة الاتصال بالخادم ، سنتصل بجلستنا التي تم إطلاقها مسبقًا:
tmux attach
وتأكد من أن برنامج التشغيل العلوي يستمر في العمل. في هذه المرحلة ، من المهم فهم المبدأ الرئيسي: بعد بدء جلسة tmux ، يبقى العمل في الخلفية على الخادم ، بصرف النظر عما إذا كنت متصلاً به أم لا.
نظرًا لأن جلسة tmux تسمح بعدة اتصالات متزامنة ، يمكن استخدام ذلك لتعاون العديد من الأشخاص على الخادم لرؤية وحدة التحكم نفسها في الوقت الفعلي. للقيام بذلك ، يتصل الجميع بالخادم نفسه ضمن نفس الحساب وأدخل tmux attach. هناك يمكنك الدردشة ، مباشرة على سطر الأوامر. غالبًا ما نستخدم هذا حتى لا نرمي سجل وحدة التحكم إلى بعضهم البعض في برنامج المراسلة ، ولكن للعمل على الفور على محطة واحدة.
يمكن لـ Tmux تقسيم نافذة إلى عدة (كل نافذة داخل علامة تبويب تسمى جزء) ، وهذا مناسب عندما تحتاج إلى رؤية وحدتي تحكم في نفس الوقت. على سبيل المثال ، في نافذة واحدة ، قم بتحرير البرنامج النصي ، وفي نافذة أخرى ، انظر إلى السجل.
يتيح لك tmux إنشاء نوافذ متعددة داخل أحدها وتغيير حجمهابشكل افتراضي ،
يتم استخدام
Ctrl + b للتحكم في tmux. بعد الضغط على مفتاح التحكم السريع هذا ، تتوقع tmux إدخال الأمر الرئيسي من حرف واحد.
فيما يلي الأوامر الأساسية:
Ctrl + b + c - (إنشاء) إنشاء نافذة جديدة (علامة تبويب)
Ctrl + b + <digit> - انتقل إلى رقم علامة التبويب N ، حيث يكون الرقم مفتاحًا من 0 إلى 9. يبدأ ترقيم النافذة من الصفر.
Ctrl + b + x - أغلق النافذة الحالية. إذا تم إغلاق النافذة الأخيرة ، ستنتهي جلسة tmux.
Ctrl + b + w - عرض قائمة بجميع النوافذ التي يمكنك تحريكها لأعلى ولأسفل باستخدام أزرار المؤشر وتحديد الإطار المطلوب بالضغط على
مفتاح الإدخال.
Ctrl + b + " - تقسيم النافذة إلى نصفين أفقيًا وإنشاء نافذة جديدة
Ctrl + b +٪ - تقسيم النافذة رأسياً وإنشاء نافذة جديدة
Ctrl + b + ، - إعادة تسمية النافذة الحالية
Ctrl + b + لأسفل / أعلى / يسار / يمين - التنقل خلال الجزء داخل النافذة
Ctrl + b + صفحة لأعلى / صفحة لأسفل - قم بالتمرير لأعلى
Ctrl + b + / - البحث حسب التاريخ ، كما في vim أو أقل
هذه هي جميع مفاتيح الاختصار التي كنت بحاجة إليها على مدى 10 سنوات من استخدام tmux. في الواقع ، هناك الكثير ، لكن من الأفضل البدء في الحديث عن هذه الأمور.
التكوين Tmux
أجد أن
مفتاح الاختصار
Ctrl + b غير مريح ، حيث يستغرق الضغط على ثلاثة مفاتيح لأي إجراء. موضوع tmux configs هو مجال منفصل من الذوق ، ولكل مستخدم محنك رؤيته الخاصة لكيفية استخدامه بشكل صحيح ومريح. هناك حتى
اختيارات المؤلف بالكامل للتكوينات والسمات لـ tmux.
بالنسبة لنقطة البداية ، سأقدم مثالًا على التكوين الخاص بي ، والذي يبدو لي أنه يعمل على حل جميع الصعوبات التي تحول دون التطور السريع لـ tmux. يوجد التكوين في المجلد الرئيسي باسم
~ / .tmux.conf
يتيح لك هذا التكوين إنشاء نوافذ متعددة تلقائيًا عند بدء التشغيل ، حيث تبدأ جلسات SSH على الفور. في هذه الحالة ، ليس من الضروري إنشاء جلسة عمل جديدة يدويًا باستخدام الأمر
tmux الجديد ، يكفي إدخال
tmux attach دائمًا. إذا لم تكن الجلسة موجودة من قبل ، فسيتم إنشاؤها.
تشغيل تلقائي tmux
نريد أنه عند الاتصال بخادم المحطة الطرفية ، نصل إلى tmux على الفور ، حتى لو تم إعادة تشغيل الخادم وأغلقت جلسة tmux.
للقيام بذلك ، قم بإضافة tmux في نهاية
ملف ~ / .bashrc . من المهم أن تتذكر أن هذا التصميم لن يعمل إلا مع التكوين أعلاه.
if [ ! "$TMUX" ]; then tmux attach fi if [ "$TMUX" ]; then export TERM=screen fi
هذا الشرط البسيط يعني أننا إذا لم نكن في tmux ، فنحن متصلاً به.
هذا يكمل تكوين tmux على الخادم الطرفي. من الآن فصاعدًا ، لكل اتصال SSH جديد ، سننشئ نافذة منفصلة في tmux. وحتى إذا فقد الاتصال بالخادم الطرفي ، فستظل جميع اتصالات SSH نشطة.
موش - لا مزيد من الاستراحات
نحتاج الآن إلى توفير اتصال مستمر بالخادم الطرفي ، والذي سيكون دائمًا نشطًا. حتى إذا أغلقنا الكمبيوتر المحمول لعدة أيام وفتحه في شبكة wifi أخرى ، فيجب استعادة الاتصال بنفسه.
Mosh عبارة عن وظيفة إضافية على خادم OpenSSH منتظم ، والذي يسمح لك بنسيان قطع الاتصال. يقوم Mosh بتسجيل الدخول باستخدام SSH العادي ، وبعد ذلك يتم رفع قناة UDP منفصلة ، والتي يتم استعادتها فورًا بعد انقطاع ، حتى إذا تم تغيير عنوان IP الخارجي الخاص بك.
نظرًا لأننا بحاجة إلى الحفاظ على اتصال دائم بالخادم الطرفي ، فسوف نقوم بتثبيت mosh فقط على الخادم وعلى جهاز الكمبيوتر العامل لدينا. في الوقت نفسه ، لا تحتاج إلى تثبيت أي شيء على الخوادم البعيدة ، حيث أن الاتصالات بها موجودة بالفعل إلى الأبد في tmux.
تثبيت mosh على الخادم:
apt install mosh
تثبيت mosh على الكمبيوتر العمل لدينا. إنه متاح لجميع أنظمة التشغيل الرئيسية ، لكن العميل الأصلي مخصص فقط لأنظمة التشغيل المشابهة لـ Unix. يتم تطبيق إصدار Windows باستخدام Cygwin أو تطبيق Chrome.
يمكنني استخدام macOS وتثبيت mosh من خلال مدير حزمة الشراب:
brew install mosh
في معظم الحالات ، لا يتطلب mosh تكوينًا إضافيًا ويعمل بشكل صحيح خارج الصندوق. يكفي كتابة mosh بدلاً من الأمر ssh:
mosh user@my-server.com
بالنسبة للتكوينات غير القياسية ، يبدو الأمر أكثر تعقيدًا. على سبيل المثال ، إذا كنت بحاجة إلى تحديد مسار المنفذ والمفتاح:
mosh --ssh="ssh -p 2222 -i /path/to/ssh.key" user@my-server.com
ينفذ Mosh المصادقة الأساسية كعميل SSH منتظم ، مع السماح للمنفذ القياسي 22. وفي الوقت نفسه ، لا يستمع خادم mosh مبدئيًا إلى أي منافذ ، وبصرف النظر عن البرنامج الخفي الأصلي لـ OpenSSH ، لا توجد منافذ مفتوحة على الخادم. بعد الاتصال عبر TCP ، يعمل mosh على الخادم في مساحة المستخدم ويفتح نفقًا إضافيًا عبر UDP.
مخطط تدفق بروتوكول موشالآن سيتم دائمًا استعادة جلسة mosh التي تعمل على العميل عند ظهور الإنترنت. على جهاز الكمبيوتر المحمول الخاص بي ، أظل مفتوحًا لجلسة mosh لمدة أشهر دون إعادة التشغيل ولم أضطر إلى تسجيل الدخول باستمرار إلى خادم المحطة الطرفية مرة أخرى ، إنه يعمل دائمًا.
من أجل عدم إدخال أمر اتصال طويل بالخادم الطرفي في كل مرة ، قمت بعمل اسم مستعار لأمر الاتصال من حرف واحد:
alias t='mosh --ssh="ssh -p 443 -i /path/to/ssh.key" user@my-server.com'
استنتاج
يتيح لك هذا المخطط البسيط توفير الوقت والأعصاب بشكل كبير ، وعدم فقدان نتيجة العمل عند كسر SSH. يجب أن أرى باستمرار كيف يبدأ مدراء المبتدئين في تسجيل الدخول إلى خوادمهم في كل مرة وقتل جلسات SSH اللزجة.
قد يبدو الأمر مربكًا للوهلة الأولى ، لكنني أؤكد لك أنه بمجرد أن تغلبت على نفسك وتعتاد على ذلك ، ستبدأ في النظر بحزن شديد إلى أولئك الذين لا يزالون قد قطعت اتصالات SSH.

اشترك في مطور Instagram الخاص بنا
