النقاط الرئيسية
- استخدم نفق SSH العكسي عندما تحتاج إلى الاتصال بجهاز كمبيوتر بعيد يصعب الوصول إليه بسبب قواعد جدار الحماية أو تكوينات الشبكة المعقدة.
- يتيح لك نفق SSH العكسي إنشاء اتصال جديد من الكمبيوتر المحلي لديك إلى الكمبيوتر البعيد باستخدام الاتصال الحالي.
- قم بإعداد مفاتيح SSH لتسهيل الاتصال من الكمبيوتر البعيد إلى الكمبيوتر المحلي دون الحاجة إلى إدخال كلمة مرور.
هل تحتاج إلى الاتصال بجهاز كمبيوتر يعمل بنظام Linux لا يمكن الوصول إليه عبر SSH؟ اطلب منه الاتصال بك، ثم استخدم هذا الاتصال للحصول على جلسة SSH عن بُعد. سنوضح لك كيفية القيام بذلك.
متى تريد استخدام نفق SSH العكسي
في بعض الأحيان، قد يكون من الصعب الوصول إلى أجهزة الكمبيوتر البعيدة. قد يكون الموقع الذي توجد فيه هذه الأجهزة به قواعد جدار حماية صارمة، أو ربما قام المسؤول المحلي بإعداد قواعد جدار حماية معقدة. ترجمة عنوان الشبكة القواعد. كيف يمكنك الوصول إلى مثل هذا الكمبيوتر إذا كنت بحاجة إلى الاتصال به؟
دعنا نضع بعض التسميات. جهاز الكمبيوتر الخاص بك هو الكمبيوتر المحلي لأنه قريب منك. والكمبيوتر الذي ستتصل به هو الكمبيوتر البعيد لأنه في موقع مختلف عن موقعك.
للتفريق بين أجهزة الكمبيوتر المحلية والبعيدة المستخدمة في هذه المقالة، يُطلق على الكمبيوتر البعيد اسم “howtogeek” ويعمل بنظام التشغيل Ubuntu Linux (مع نوافذ طرفية أرجوانية اللون). ويُطلق على الكمبيوتر المحلي اسم “Sulaco” ويعمل بنظام التشغيل Manjaro Linux (مع نوافذ طرفية صفراء اللون).
عادة ما تقوم بإشعال النار اتصال SSH من الكمبيوتر المحلي والاتصال بالكمبيوتر البعيد. هذا ليس خيارًا في سيناريو الشبكات الذي نصفه. لا يهم حقًا ما هي مشكلة الشبكة المحددة – فهذا مفيد عندما لا تتمكن من الاتصال مباشرة بجهاز كمبيوتر بعيد عبر 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 لأنه مُدرج على أنه غير مخصصإنه ليس رقمًا خاصًا. - dave@sulaco.local هو حساب المستخدم الذي سيتصل به الكمبيوتر البعيد على الكمبيوتر المحلي.
ssh -R 43022:localhost:22 dave@sulaco.local
قد تتلقى تحذيرًا بشأن عدم الاتصال بالكمبيوتر المحلي من قبل. أو قد ترى تحذيرًا عند إضافة تفاصيل الاتصال إلى قائمة مضيفات SSH المعترف بها. ما تراه – إن وجد – يعتمد على ما إذا كانت الاتصالات قد تم إجراؤها من الكمبيوتر البعيد إلى الكمبيوتر المحلي.
سيتم مطالبتك بكلمة المرور الخاصة بالحساب الذي تستخدمه للاتصال بالكمبيوتر المحلي.
لاحظ أنه عند إجراء الاتصال يتغير موجه الأوامر من dave@howtogeek إلى dave@sulaco.
نحن الآن متصلون بالكمبيوتر المحلي من الكمبيوتر البعيد. وهذا يعني أنه يمكننا إصدار أوامر إليه. فلنستخدم who
أمر لرؤية عمليات تسجيل الدخول على الكمبيوتر المحلي.
who
يمكننا أن نرى أن الشخص الذي لديه حساب المستخدم المسمى dave قد سجل الدخول إلى الكمبيوتر المحلي، وقد اتصل الكمبيوتر البعيد (باستخدام نفس بيانات اعتماد المستخدم) من عنوان IP 192.168.4.25.
الاتصال بالكمبيوتر البعيد
نظرًا لأن الاتصال من الكمبيوتر البعيد ناجح، وهو يستمع للاتصالات، فيمكننا محاولة الاتصال بالكمبيوتر البعيد من الكمبيوتر المحلي.
يستمع الكمبيوتر البعيد على المنفذ 43022 على الكمبيوتر المحلي. لذا — على نحو يخالف الحدس إلى حد ما — لإنشاء اتصال بالكمبيوتر البعيد، نطلب ssh
لإجراء اتصال بالكمبيوتر المحلي، على المنفذ 43022. سيتم إعادة توجيه طلب الاتصال هذا إلى الكمبيوتر البعيد.
ssh localhost -p 43022
يُطلب منا إدخال كلمة مرور حساب المستخدم، ثم يتم الاتصال بالكمبيوتر البعيد من الكمبيوتر المحلي. يقول كمبيوتر Manjaro الخاص بنا بكل سرور، “مرحبًا بك في Ubuntu 18.04.2 LTS”.
لاحظ أن موجه الأوامر قد تغير من dave@sulaco إلى dave@howtogeek. لقد حققنا هدفنا المتمثل في إنشاء اتصال SSH بجهاز الكمبيوتر البعيد الذي يصعب الوصول إليه.
استخدام SSH مع المفاتيح
لتسهيل الاتصال من الكمبيوتر البعيد إلى الكمبيوتر المحلي، يمكننا إعداد مفاتيح SSH.
على الكمبيوتر البعيد، اكتب هذا الأمر:
ssh-keygen
سيُطلب منك إدخال عبارة مرور. يمكنك الضغط على Enter لتجاهل أسئلة عبارة المرور، ولكن لا يُنصح بذلك. فهذا يعني أن أي شخص على الكمبيوتر البعيد يمكنه إجراء اتصال SSH بالكمبيوتر المحلي الخاص بك دون أن يُطلب منه إدخال كلمة مرور.
ستشكل عبارة المرور القوية ثلاث أو أربع كلمات مفصولة برموز.
سيتم إنشاء مفاتيح SSH الخاصة بك.
نحن بحاجة إلى نقل المفتاح العام إلى الكمبيوتر المحلي. استخدم هذا الأمر:
ssh-copy-id dave@sulaco.local
سيتم مطالبتك بإدخال كلمة المرور لحساب المستخدم الذي تقوم بتسجيل الدخول إليه، في هذه الحالة، dave@sulaco.local.
في المرة الأولى التي تقوم فيها بإجراء طلب اتصال من الكمبيوتر البعيد إلى الكمبيوتر المحلي، سيتعين عليك تقديم عبارة المرور. ولن تضطر إلى إدخالها مرة أخرى لطلبات الاتصال المستقبلية، طالما ظلت نافذة المحطة الطرفية مفتوحة.
ليست كل الأنفاق مخيفة
قد تكون بعض الأنفاق مظلمة ومعقدة، ولكن نفق SSH العكسي ليس صعبًا للغاية إذا تمكنت من الحفاظ على العلاقة بين الكمبيوتر البعيد والكمبيوتر المحلي واضحة في ذهنك. ثم قم بعكسها. لتسهيل الأمور، يمكنك دائمًا إعداد ملف تكوين SSH الذي يسمح لك بتبسيط أشياء مثل الأنفاق أو إعادة توجيه وكيل SSH.