ما هو عكس نفق SSH؟ (وكيف يستعمل)

هل تحتاج إلى SSH لجهاز كمبيوتر Linux لا يمكن الوصول إليه؟ اطلب منه الاتصال بك ، ثم اخترق هذا الاتصال للحصول على جلسة SSH عن بُعد. نوضح لك كيف.
عندما تريد استخدام عكس نفق SSH
في بعض الأحيان ، قد يكون من الصعب الوصول إلى أجهزة الكمبيوتر البعيدة. قد يحتوي الموقع الذي يتواجدون فيه على قواعد جدار حماية صارمة ، أو ربما يكون المسؤول المحلي قد أنشأ معقدًا ترجمة عنوان الشبكة قواعد. كيف تصل إلى مثل هذا الكمبيوتر إذا كنت بحاجة للاتصال به؟
دعونا ننشئ بعض الملصقات. جهاز الكمبيوتر الخاص بك هو الكمبيوتر المحلي لأنه قريب منك. الكمبيوتر الذي ستقوم بالاتصال به هو الكمبيوتر البعيد لأنه في موقع مختلف عنك.
للتمييز بين أجهزة الكمبيوتر المحلية والبعيدة المستخدمة في هذه المقالة ، يسمى الكمبيوتر البعيد “wdzwdz” ويقوم بتشغيل Ubuntu Linux (مع نوافذ طرفية أرجوانية). يُطلق على الكمبيوتر المحلي اسم “Sulaco” ويعمل بنظام Manjaro Linux (مع نوافذ طرفية صفراء).
عادةً ما تقوم بإطلاق ملف اتصال SSH من الكمبيوتر المحلي والاتصال بالكمبيوتر البعيد. هذا ليس خيارًا في سيناريو الشبكات الذي نصفه. لا يهم حقًا ما هي مشكلة الشبكة المحددة – فهذا مفيد عندما لا يمكنك استخدام بروتوكول SSH مباشرة إلى جهاز كمبيوتر بعيد.
ولكن إذا كان تكوين الشبكة من جانبك بسيطًا ، فيمكن للكمبيوتر البعيد الاتصال بك. هذا وحده لا يكفي لاحتياجاتك ، لأنه لا يوفر لك جلسة عمل لسطر الأوامر على الكمبيوتر البعيد. بل أنها بداية. لديك اتصال قائم بين جهازي الكمبيوتر.
الجواب يكمن في عكس نفق SSH.
ما هو عكس نفق SSH؟
يسمح لك نفق SSH العكسي باستخدام هذا الاتصال المؤسس لإعداد اتصال جديد من الكمبيوتر المحلي الخاص بك إلى الكمبيوتر البعيد.
نظرًا لأن الاتصال الأصلي جاء من الكمبيوتر البعيد إليك ، فإن استخدامه للذهاب في الاتجاه الآخر هو استخدامه “في الاتجاه المعاكس”. ولأن SSH آمن ، فأنت تضع اتصالاً آمنًا داخل اتصال آمن موجود. هذا يعني أن اتصالك بالكمبيوتر البعيد يعمل كنفق خاص داخل الاتصال الأصلي.
وهكذا وصلنا إلى الاسم “عكس نفق SSH”.
كيف يعمل؟
يعتمد نفق SSH العكسي على الكمبيوتر البعيد باستخدام الاتصال المعمول به للاستماع إلى طلبات الاتصال الجديدة من الكمبيوتر المحلي.
يستمع الكمبيوتر البعيد إلى منفذ شبكة على الكمبيوتر المحلي. إذا اكتشف طلب SSH إلى هذا المنفذ ، فإنه ينقل طلب الاتصال هذا مرة أخرى إلى نفسه ، أسفل الاتصال الثابت. يوفر هذا اتصالاً جديدًا من الكمبيوتر المحلي إلى الكمبيوتر البعيد.
من الأسهل الإعداد مما هو عليه في الوصف.
استخدام نفق SSH العكسي
سيتم تثبيت SSH بالفعل على كمبيوتر Linux الخاص بك ، ولكن قد تحتاج إلى بدء برنامج SSH daemon (sshd) إذا لم يقبل الكمبيوتر المحلي اتصالات SSH من قبل.
sudo systemctl start sshd
لجعل عفريت SSH يبدأ في كل مرة تقوم فيها بإعادة تشغيل جهاز الكمبيوتر الخاص بك ، استخدم هذا الأمر:
sudo systemctl enable sshd
على الكمبيوتر البعيد ، نستخدم الأمر التالي.
يخبر الخيار -R (عكس) ssh أنه يجب إنشاء جلسات SSH جديدة على الكمبيوتر البعيد.
يخبر “43022: localhost: 22” ssh أنه يجب إعادة توجيه طلبات الاتصال إلى المنفذ 43022 على الكمبيوتر المحلي إلى المنفذ 22 على الكمبيوتر البعيد. تم اختيار المنفذ 43022 لأنه كذلك المدرجة على أنها غير مخصصة. إنه ليس رقمًا مميزًا.
[email protected] هو حساب المستخدم الذي سيقوم الكمبيوتر البعيد بالاتصال به على الكمبيوتر المحلي.
ssh -R 43022:localhost:22 [email protected]
قد تتلقى تحذيرًا بشأن عدم الاتصال مطلقًا بالكمبيوتر المحلي من قبل. أو قد ترى تحذيرًا حيث تتم إضافة تفاصيل الاتصال إلى قائمة مضيفي SSH المعترف بهم. ما تراه – إن وجد – يعتمد على ما إذا كان قد تم إجراء اتصالات من الكمبيوتر البعيد إلى الكمبيوتر المحلي.
ستتم مطالبتك بكلمة مرور الحساب الذي تستخدمه للاتصال بالكمبيوتر المحلي.
لاحظ أنه عند إجراء الاتصال ، يتغير موجه الأوامر من [email protected] ل [email protected]
نحن الآن متصلون بالكمبيوتر المحلي من الكمبيوتر البعيد. هذا يعني أنه يمكننا إصدار أوامر إليه. دعنا نستخدم الأمر who لرؤية عمليات تسجيل الدخول على الكمبيوتر المحلي.
who
يمكننا أن نرى أن الشخص الذي لديه حساب مستخدم يسمى ديف قد سجل الدخول إلى الكمبيوتر المحلي ، وأن الكمبيوتر البعيد متصل (باستخدام نفس بيانات اعتماد المستخدم) من عنوان IP 192.168.4.25.
الاتصال بجهاز الكمبيوتر البعيد
نظرًا لأن الاتصال من الكمبيوتر البعيد ناجح ، وأنه يستمع للاتصالات ، يمكننا محاولة الاتصال بالكمبيوتر البعيد من الكمبيوتر المحلي.
الكمبيوتر البعيد يستمع على المنفذ 43022 على الكمبيوتر المحلي. لذلك – بشكل غير بديهي إلى حد ما – لإجراء اتصال بجهاز الكمبيوتر البعيد ، نطلب من ssh إجراء اتصال بالكمبيوتر المحلي ، على المنفذ 43022. سيتم إعادة توجيه طلب الاتصال هذا إلى الكمبيوتر البعيد.
ssh localhost -p 43022
تتم مطالبتنا بكلمة مرور حساب المستخدم ، ثم الاتصال بالكمبيوتر البعيد من الكمبيوتر المحلي. يقول كمبيوتر Manjaro الخاص بنا بسعادة ، “مرحبًا بك في Ubuntu 18.04.2 LTS”.
لاحظ أن موجه الأوامر قد تغير من [email protected] ل [email protected] لقد حققنا هدفنا المتمثل في إنشاء اتصال SSH بجهاز الكمبيوتر البعيد الذي يصعب الوصول إليه.
استخدام SSH مع المفاتيح
لتسهيل الاتصال من الكمبيوتر البعيد بالكمبيوتر المحلي ، يمكننا إعداد مفاتيح SSH.
على الكمبيوتر البعيد ، اكتب هذا الأمر:
ssh-keygen
سيُطلب منك عبارة مرور. يمكنك الضغط على Enter لتجاهل أسئلة عبارة المرور ، لكن هذا غير مستحسن. قد يعني ذلك أن أي شخص على الكمبيوتر البعيد يمكنه إجراء اتصال SSH بجهاز الكمبيوتر المحلي الخاص بك دون الطعن في كلمة المرور.
ثلاث أو أربع كلمات مفصولة برموز ستشكل عبارة مرور قوية.
سيتم إنشاء مفاتيح SSH الخاصة بك.
نحتاج إلى نقل المفتاح العام إلى الكمبيوتر المحلي. استخدم هذا الأمر:
ssh-copy-id [email protected]
ستتم مطالبتك بكلمة المرور لحساب المستخدم الذي تقوم بتسجيل الدخول إليه ، في هذه الحالة ، [email protected]
في المرة الأولى التي تقدم فيها طلب اتصال من الكمبيوتر البعيد إلى الكمبيوتر المحلي ، يجب عليك تقديم عبارة المرور. لن تضطر إلى إدخاله مرة أخرى لطلبات الاتصال المستقبلية ، طالما أن نافذة المحطة الطرفية هذه تظل مفتوحة.
ليست كل الأنفاق مخيفة
يمكن أن تكون بعض الأنفاق مظلمة وملتوية ، لكن نفق SSH العكسي ليس صعبًا للغاية للتنقل إذا كان بإمكانك الحفاظ على العلاقة بين الكمبيوتر البعيد والكمبيوتر المحلي مباشرة في رأسك. ثم عكسها.