في هذه المقالة ، سنتحدث عن الحيل والأوامر المفيدة عند العمل مع SSH. يسمى:
- كيفية استخدام المصادقة الثنائية لاتصالات SSH.
- الاستخدام الآمن لـ "وكيل الشحن".
- إنهاء جلسة معلقة.
- نترك المحطة مفتوحة عند الخروج أو قطع الاتصال.
- ( Zoom!).
هناك خمس طرق لتنشيطه.
1. نقوم بتحديث OpenSSH واستخدام الرموز المميزة للأجهزة. في فبراير من هذا العام ، تمت إضافة دعم رموز FIDO U2F (العامل الثاني العالمي) إلى OpenSSH. ماذا يمكنني أن أقول - هذا رائع ، لكن هناك تحذير واحد.
النقطة المهمة هي أن التحديث يضيف أنواع مفاتيح جديدة لدعم الرموز المميزة. ومع ذلك ، لا يمكن استخدام هذه الميزة إلا عند تحديث العميل والخادم إلى الإصدار 8.2 أو أحدث. يمكنك التحقق من الإصدار الحالي من العميل باستخدام الأمر ssh -V. بقدر ما يتعلق الأمر بالخادم البعيد ، فإن الأمر يستحق استخدام nc [servername] 22.
بالإضافة إلى ذلك ، تمت إضافة نوعين جديدين من المفاتيح - ecdsa-sk و ed25519-sk. هناك أيضا شهادات لهم. لإنشاء ملفات مفاتيح ، تحتاج إلى إدخال رمز مميز وتنفيذ الأمر
$ ssh-keygen -t ecdsa-sk -f ~ / .ssh / id_ecdsa_sk.
ماذا تفعل؟ ينشئ مفاتيح عامة وخاصة مرتبطة برمز U2F. يتم استخدام المفتاح الخاص على الرمز المميز لفك تشفير المفتاح الخاص المخزن على القرص.
الاحتمال الآخر هو تعيين كلمة مرور لملفات المفاتيح كعامل ثانٍ. الحقيقة هي أن OpenSSH يعمل مع خيار جيل آخر - sk. وبالتالي ، يتم تخزين ملفات المفاتيح على رمز مميز للأجهزة وتكون دائمًا معك. من أجل إنشاء مفتاح مقيم ، تحتاج إلى استخدام الأمر:
$ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk.
حسنًا ، لنقل ملف المفتاح إلى جهاز جديد ، تحتاج إلى إدخال الوسائط وتشغيل الأمر $ ssh-add -K. تذكر - يجب تنشيط الرمز المميز عند الاتصال.
2. نستخدم PIV + PKCS11 و Yubikey. في حالة احتياجك إلى الاتصال بأجهزة مثبتة عليها إصدارات سابقة من خادم SSH ، فهناك خيار آخر. فيما يلي تعليمات مفصلة عن U2F + SSH باستخدام PIV / PKCS11 . صعب بعض الشيء لكنه يستحق ذلك.
3. الطريقة الثالثة هي استخدام وكيل yubikey. هنا وكيل SSH لعائلة Yubikeys نفسها ، تم إنشاؤه بواسطة Filipo Valsorda.
4. Touch ID و sekey. طريقة أخرى لاستخدام Sekey- وكيل مفتوح المصدر. يخزن المفاتيح الخاصة في نظام الجيب الآمن لنظام التشغيل MacOS ويسمح لك بتشغيل ميزة توقيع Touch ID.
5. أخيرًا ، باستخدام SSH للدخول الموحد. هنا تعليمات الإعداد. ميزة الدخول الأحادي SSH هي أن المستخدم قادر على فرض السياسة الأمنية لمزود الحساب ، بما في ذلك دعم المصادقة متعددة العوامل.
إعادة توجيه المفتاح الآمن (إعادة توجيه الوكيل)
ما هو مفتاح التوجيه المستخدمة؟ للوصول إلى المضيف البعيد إلى وكيل مستخدم SSH المحلي. الحقيقة هي أنه عندما يستخدم عميل SSH إعادة توجيه المفتاح (غالبًا ما يتم تنشيط ssh -A) ، ثم أثناء الاتصال هناك قناتان. الأولى هي جلسة تفاعلية للمستخدم ، والثانية هي قناة إعادة توجيه رئيسية.
يقوم وكيل SSH المحلي بإنشاء مقبس IPC الذي يتصل عبر هذه القناة بالمضيف البعيد. هذا أمر خطير للغاية ، لأن المستخدم الجذر على المضيف البعيد لديه حق الوصول إلى وكيل SSH المحلي للمستخدم المتصل. وبالتالي ، يمكن استخدامه للوصول إلى موارد الشبكة نيابة عن هذا المستخدم. وإذا كنت تعمل مع وكيل SSH قياسي ، فلن تعرف المشكلة. ولكن باستخدام مفتاح U2F أو Sekey ، يمكن إزالة هذه المشكلة.
بشكل عام ، يمكنك إعادة توجيه المفتاح ، ولكن يُنصح بعدم استخدام هذه الطريقة كثيرًا ولجميع اتصالاتك. يُنصح باستخدامه فقط عندما يكون المستخدم واثقًا من الموقف.
تسجيل الخروج من جلسة SSH معلقة
غالبًا ما تتجمد جلسات SSH بسبب مشاكل في الشبكة ، أو فقدان التحكم في برنامج قيد التشغيل ، أو أحد تسلسلات هروب الجهاز الطرفي الذي يحظر إدخال لوحة المفاتيح. توجد عدة طرق للخروج من جلسة معلقة:
1. تلقائيًا عند فصل الشبكة. للقيام بذلك ، أضف إلى ملف تكوين SSH ، .ssh / config: ServerAliveInterval
5
ServerAliveCountMax 1
في هذه الحالة ، سيتحقق ssh من الاتصال عن طريق إرسال طلبات الارتداد إلى المضيف البعيد على فترات منتظمة. يتم تعيينها بواسطة المعلمة ServerAliveInterval. إذا كان هناك عدد من الطلبات التي لم يتم الرد عليها أكثر من ServerAliveCountMax ، فإن SSH يغلق الاتصال.
2. تفريق الدورة. يستخدم ssh الحرف ~ كتسلسل هروب افتراضي. يغلق الأمر ~ الاتصال الحالي ويعود إلى المحطة.
أيضا ، ~؟ يعرض القائمة الكاملة للأوامر التي يمكن استخدامها في الجلسة الحالية. إذا كان لديك تخطيطات متعددة مثبتة ، فسيتعين عليك الضغط على الزر ~ مرتين لإرسال حرف.
ترك الجهاز على المضيف البعيد مفتوحًا
هناك خياران لحفظ الجلسة أثناء التبديل بين الشبكات.
1. استخدام Mosh أو Eternal Terminal
إذا كنت بحاجة إلى اتصال موثوق به وغير مغلق ، حتى عند التبديل بين الشبكات ، فهناك طريقة للخروج - تحتاج إلى استخدام Mosh - mobile shell. يشير Mosh إلى غلاف آمن يستخدم SSH لتهيئة جلسة (المصافحة). بعد ذلك ، انتقلت إلى قناتها المشفرة ، وهي مستقرة جدًا. على سبيل المثال ، يمكنه التعامل مع مواقف مختلفة ، بما في ذلك قطع الاتصال والتغييرات في عنوان IP للجهاز والتأخيرات الكبيرة في نقل البيانات وما إلى ذلك. كل هذا بفضل UDP وبروتوكول المزامنة الذي يستخدمه Mosh.
للعمل معها ، أولاً وقبل كل شيء ، تحتاج إلى تثبيته على كل من الخادم والعميل ، وفتح المنافذ من 60000 إلى 61000 لحركة مرور UDP الواردة على مضيفك البعيد. بعد ذلك ، تحتاج فقط إلى كتابة mosh user @ server للاتصال.
يعمل Mosh على مستوى الشاشات الطرفية وضربات المفاتيح ، مما يمنحه الكثير من المزايا مقارنة بـ SSH ، الذي ينقل دفق بيانات ثنائي من الإدخال / الإخراج العادي بين العملاء والخادم. إذا كنت بحاجة إلى مزامنة شاشة المحطة الطرفية وضغطات المفاتيح فقط ، فسيتم استعادة الاتصال المتقطع بشكل أسرع. يجب تخزين نفس SSH في مخزن مؤقت وإرسال كل شيء ، لكن Mosh يحتاج فقط إلى حفظ ضغطات المفاتيح ، ومزامنة الحالة الأخيرة من نافذة المحطة الطرفية مع العميل.
2. باستخدام tmux. من أجل الاتصال وقطع الاتصال حسب الحاجة ، مع الحفاظ على نفس الجلسة على المضيف البعيد ، يجدر استخدام معدد إرسال طرفي يسمى tmux . في حالة انقطاع اتصال SSH ، تحتاج إلى إعادة الاتصال واكتب tmux attachment. ثم يعود المستخدم إلى جلسة tmux.
كما يوفر العديد من الميزات الإضافية ، بما في ذلك علامات التبويب واللوحات ، كما هو الحال في محطة macOS ، بالإضافة إلى القدرة على العمل مع الجهاز مع مستخدم آخر. يمكنك الحصول على المزيد مع Byobu ، وهي حزمة تضيف العديد من الوظائف المناسبة واختصارات لوحة المفاتيح. يأتي مع Ubuntu ويمكن تشغيله على macOS باستخدام Homebrew.
مشاركة محطة بعيدة
هناك مواقف تحتاج فيها إلى مشاركة جلسة SSH - على سبيل المثال ، أثناء حل المشكلات المعقدة مع الخوادم. أفضل طريقة للقيام بذلك هي باستخدام tmux. لحل المشكلة ، عليك القيام بما يلي:
- تأكد من تثبيت tmux على الخادم في DMZ (أو الموقع الذي تريد الاتصال به).
- يحتاج كلا المستخدمين إلى الاتصال بالخادم عبر SSH بنفس الحساب.
- يجب على أحد المستخدمين تشغيل tmux لإنشاء جلسة tmux.
- يقوم المستخدم الثاني بتشغيل الأمر tmux attach.
- كل شيء جاهز!
إذا كنت بحاجة إلى ضبط الجلسات متعددة المستخدمين ، فيجب عليك استخدام tmate . هذه شوكة محسنة لـ tmux.
نصيحة إختصاصية
قررنا استكمال الترجمة بنصائحنا الخاصة - ونأمل أن تكون مفيدة أيضًا. شارك ماكسيم كلوشكوف ، كبير المستشارين في مركز حلول الشبكات لأنظمة المعلومات النفاثة ومعلم دورة مهنة الأمن السيبراني في Skillbox ، تجربته المفيدة .
إعادة توجيه منفذ TCP
لدى Ssh خياران مفيدان: -L و -R.
تنظم المعلمة -L منفذ TCP مفتوحًا على جهاز الكمبيوتر المحلي لدينا ، عند محاولة إنشاء اتصال TCP يتم إعادة توجيه هذا الاتصال إليه بشفافية إلى نفق ssh ، ثم يتم إنشاء اتصال من الكمبيوتر البعيد.
يتبع المعلمة -L وسيطة بالشكل التالي:
ssh -L XXX:server1:YYY login@server2
هنا server2 هو الخادم البعيد الذي نصل إليه عبر ssh ، تسجيل الدخول هو اسم المستخدم الذي نقوم بموجبه بتسجيل الدخول إلى الخادم البعيد ، XXX هو رقم المنفذ الذي يجب تنظيمه على الكمبيوتر المحلي ، الخادم 1 هو المضيف الذي نحتاج إلى إعادة توجيه الاتصال من هذا المنفذ ، وأخيرًا YYY هو المنفذ الذي يجب إعادة توجيه هذا الاتصال إليه.
لنلق نظرة على مثالين.
مثال 1.
- نحن موجودون على خادم spb.company1.ru ، ونريد اختبار تطبيق ويب يصل إلى قاعدة البيانات على central-db.company1.ru
- قاعدة البيانات هذه متاحة فقط من خادم moscow.company1.ru على المنفذ 9999
- سننظم إعادة توجيه المنفذ المحلي 55555 إلى قاعدة البيانات من خلال نفق ssh على النحو التالي: ssh -L 55555: central-db.company1.ru : 9999 login@moscow.company1.ru
- بعد ذلك ، ننشر تطبيق ويب على خادمنا المحلي ، ونحدد ليس central-db.company1.ru:9999 كقاعدة ، ولكن المضيف المحلي: 55555 - سيتم إعادة توجيه هذا الاتصال إلى خادم moscow.company1.ru ، وسيقوم هذا الخادم بإجراء الاتصال مع قاعدة بيانات على المضيف central-db.company1.ru ، المنفذ 9999
مثال 2.
- نحن موجودون على خادم spb.company1.ru ، ونريد أن نظهر للعميل موقع اختبار على موقع moscow.company1.ru ، المنفذ 5000.
- لا يوجد وصول إلى هذا الموقع من الإنترنت ، لا يوجد سوى وصول داخلي من نفس المضيف حيث يتم نشره ، أي من moscow.company1.ru
- ننظم إعادة توجيه المنفذ المحلي 80 عبر نفق ssh على النحو التالي ssh -L 80: localhost: 5000 login@moscow.company1.ru
- إذا دخل المستخدم الآن إلى المتصفح باستخدام الرابط spb.company1.ru ، فسيتم إعادة توجيه الاتصال عبر نفق ssh إلى خادم moscow.company1.ru ، وسيقوم هذا الخادم بالفعل بإنشاء اتصال بالعنوان المضيف المحلي: 5000 ، أي اختبار الويب الخاص بنا -موقع.
تنظم المعلمة -R منفذ TCP مفتوحًا على الخادم البعيد ، عند محاولة إنشاء اتصال TCP ، يتم توجيه هذا الاتصال بشفافية إلى نفق ssh ، ثم يتم إنشاء اتصال من الخادم المحلي.
المعامل -R يتبعه وسيط بالشكل التالي:
ssh -R XXX:server1:YYY login@server2
هنا server2 هو الخادم البعيد الذي نسجل الدخول إليه عبر ssh ، تسجيل الدخول هو اسم المستخدم الذي نقوم بموجبه بتسجيل الدخول إلى الخادم البعيد ، XXX هو رقم المنفذ الذي يجب تنظيمه على الخادم البعيد ، الخادم 1 هو المضيف الذي نحتاج إليه لإعادة توجيه الاتصال من الخادم البعيد ، وأخيرًا YYY هو المنفذ الذي يجب إعادة توجيه هذا الاتصال إليه.
لنلق نظرة على مثالين.
مثال 1.
- نحن على خادم moscow.company1.ru ، ومن هذا الخادم تتوفر قاعدة بيانات على الخادم central-db.company1.ru ، على المنفذ 9999.
- نحن نقوم بنشر تطبيق ويب على خادم spb.company1.ru ، ولا يمكن الوصول إلى قاعدة البيانات من هذا الخادم.
- سننظم إعادة توجيه المنفذ من خادم spb.company1.ru إلى قاعدة البيانات على النحو التالي: ssh -R 55555: central-db.company1.ru : 9999 login@spb.company1.ru
- بعد ذلك ، ننشر تطبيق الويب الخاص بنا على خادم spb.company1.ru ، لكننا لا نحدد central-db.company1.ru:9999 كقاعدة ، نظرًا لأن هذا الخادم غير متاح لنا ، ولكن المضيف المحلي: 55555 - سيتم إعادة توجيه هذا الاتصال إلى منطقتنا المحلية الجهاز من خلال نفق ssh ، ثم سيقوم الجهاز المحلي بإنشاء اتصال بالخادم المركزي db.company1.ru ، المنفذ 9999.
مثال 2.
- نحن على خادم moscow.company1.ru وقمنا بنشر موقع اختبار على خادمنا ، على المنفذ 5000.
- يتوفر موقع الاختبار هذا محليًا فقط ، ولا يُسمح بالاتصالات من الإنترنت ، ولكننا نريد توضيح موقع الويب هذا للعميل الذي يمكنه استخدام متصفح الويب للوصول إلى خادم spb.company1.ru
- سننظم إعادة توجيه المنفذ من خادم spb.company1.ru على النحو التالي: ssh -R 80: localhost: 5000 login@spb.company1.ru
- إذا دخل المستخدم الآن إلى المتصفح باستخدام الرابط spb.company1.ru ، فسيتم إعادة توجيه الاتصال عبر نفق ssh إلى خادمنا المحلي moscow.company1.ru ، وسيتم إنشاء اتصال منه بالمضيف المحلي: 5000 - أي إلى اختبار الويب الخاص بنا موقع.
ما الحيل التي يمكنك مشاركتها؟
حول هذا الموضوع:
- المقالة " كيفية استخدام Bash ستؤدي المهمة " ؛
- دورة تدريبية عملية عبر الإنترنت " Linux OS Administration ".