كيفية استخدام نفق SSH للوصول إلى الخوادم المقيدة والتصفح بأمان

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

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

يمكنك القيام بذلك باستخدام sshالأمر المضمن في Linux و macOS وأنظمة تشغيل أخرى شبيهة بـ UNIX. في نظام Windows ، الذي لا يتضمن أمر ssh مضمنًا ، نوصي باستخدام الأداة المجانية PuTTY للاتصال بخوادم SSH. وهو يدعم نفق SSH أيضًا.

إعادة توجيه المنفذ المحلي: اجعل الوصول إلى الموارد البعيدة على نظامك المحلي

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

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

لاستخدام إعادة التوجيه المحلي ، اتصل بخادم SSH بشكل طبيعي ، ولكن قم أيضًا بتوفير -Lالوسيطة. الصيغة هي:

ssh -L local_port: remote_address: remote_port [email protected]

على سبيل المثال ، لنفترض أن خادم قاعدة البيانات في مكتبك يقع على 192.168.1.111 على شبكة المكتب. لديك حق الوصول إلى خادم SSH الخاص بالمكتب على ssh.youroffice.com، وحساب المستخدم الخاص بك على خادم SSH هو bob. في هذه الحالة ، سيبدو الأمر كما يلي:

ssh -L 8888: 192.168.1.111: 1234 [email protected]

بعد تشغيل هذا الأمر ، ستتمكن من الوصول إلى خادم قاعدة البيانات على المنفذ 8888 في المضيف المحلي. لذلك ، إذا كان خادم قاعدة البيانات يوفر الوصول إلى الويب ، فيمكنك توصيل // localhost: 8888 في متصفح الويب للوصول إليه. إذا كانت لديك أداة سطر أوامر تحتاج إلى عنوان الشبكة لقاعدة البيانات ، فستوجهها إلى المضيف المحلي: 8888. سيتم تحويل كل حركة المرور المرسلة إلى المنفذ 8888 على جهاز الكمبيوتر الخاص بك إلى 192.168.1.111:1234 على شبكة مكتبك.

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

في هذه الحالة ، يمكنك تشغيل أمر مثل الأمر التالي:

ssh -L 8888: المضيف المحلي: 1234 [email protected]

عندما تحاول الوصول إلى خادم قاعدة البيانات في المنفذ 8888 على جهاز الكمبيوتر الحالي ، سيتم إرسال حركة المرور عبر اتصال SSH. عندما يصل إلى النظام الذي يقوم بتشغيل خادم SSH ، سيرسله خادم SSH إلى المنفذ 1234 على “localhost” ، وهو نفس الكمبيوتر الذي يقوم بتشغيل خادم SSH نفسه. لذا فإن "localhost" في الأمر أعلاه يعني "localhost" من منظور الخادم البعيد.

للقيام بذلك في تطبيق PuTTY على Windows ، حدد الاتصال> SSH> الأنفاق. حدد الخيار "محلي". بالنسبة لـ "Source Port" ، أدخل المنفذ المحلي. بالنسبة إلى "الوجهة" ، أدخل عنوان الوجهة والمنفذ بالشكل remote_address: remote_port.

على سبيل المثال ، إذا أردت إعداد نفس نفق SSH على النحو الوارد أعلاه ، فستدخل كمنفذ 8888المصدر localhost:1234وكوجهة. انقر فوق "إضافة" بعد ذلك ثم انقر فوق "فتح" لفتح اتصال SSH. ستحتاج أيضًا إلى إدخال عنوان ومنفذ خادم SSH نفسه على شاشة "Session" الرئيسية قبل الاتصال بالطبع.

إعادة توجيه المنفذ البعيد: اجعل الموارد المحلية متاحة على نظام بعيد

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

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

لاستخدام إعادة التوجيه عن بُعد ، استخدم sshالأمر مع -Rالوسيطة. بناء الجملة هو نفسه إلى حد كبير مع إعادة التوجيه المحلي:

ssh -R remote_port: local_address: local_port [email protected]

لنفترض أنك تريد جعل تطبيق خادم يستمع عند المنفذ 1234 على جهاز الكمبيوتر المحلي الخاص بك في المنفذ 8888 على خادم SSH البعيد. عنوان خادم SSH هو ssh.youroffice.comواسم المستخدم الخاص بك على خادم SSH هو bob . ستقوم بتشغيل الأمر التالي:

ssh -R 8888: localhost: 1234 [email protected]

يمكن لأي شخص بعد ذلك الاتصال بخادم SSH على المنفذ 8888 وسيتم نقل هذا الاتصال إلى تطبيق الخادم الذي يعمل في المنفذ 1234 على الكمبيوتر المحلي الذي أنشأت الاتصال منه.

للقيام بذلك في PuTTY على Windows ، حدد اتصال> SSH> الأنفاق. حدد خيار "Remote". بالنسبة لـ "Source Port" ، أدخل المنفذ البعيد. بالنسبة إلى "الوجهة" ، أدخل عنوان الوجهة والمنفذ بالشكل local_address: local_port.

على سبيل المثال ، إذا أردت إعداد المثال أعلاه ، فستدخل كمنفذ 8888المصدر localhost:1234وكوجهة. انقر فوق "إضافة" بعد ذلك ثم انقر فوق "فتح" لفتح اتصال SSH. ستحتاج أيضًا إلى إدخال عنوان ومنفذ خادم SSH نفسه على شاشة "Session" الرئيسية قبل الاتصال بالطبع.

يمكن للأشخاص بعد ذلك الاتصال بالمنفذ 8888 على خادم SSH وسيتم نقل حركة المرور الخاصة بهم إلى المنفذ 1234 على نظامك المحلي.

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

إعادة توجيه المنفذ الديناميكي: استخدم خادم SSH كخادم وكيل

ذات صلة: ما الفرق بين VPN والبروكسي؟

هناك أيضًا "إعادة توجيه المنفذ الديناميكي" ، والذي يعمل بشكل مشابه للبروكسي أو VPN. سيقوم عميل SSH بإنشاء بروكسي SOCKS يمكنك تكوين التطبيقات لاستخدامه. سيتم إرسال كل حركة المرور المرسلة عبر الوكيل عبر خادم SSH. هذا مشابه لإعادة التوجيه المحلي - فهو يأخذ حركة المرور المحلية المرسلة إلى منفذ معين على جهاز الكمبيوتر الخاص بك ويرسلها عبر اتصال SSH إلى موقع بعيد.

ذات صلة: لماذا يمكن أن يكون استخدام شبكة Wi-Fi عامة خطيرًا ، حتى عند الوصول إلى مواقع الويب المشفرة

على سبيل المثال ، لنفترض أنك تستخدم شبكة Wi-Fi عامة. تريد التصفح بأمان دون التطفل. إذا كان لديك وصول إلى خادم SSH في المنزل ، فيمكنك الاتصال به واستخدام إعادة توجيه المنفذ الديناميكي. سيقوم عميل SSH بإنشاء بروكسي SOCKS على جهاز الكمبيوتر الخاص بك. سيتم إرسال كل حركة المرور المرسلة إلى هذا الوكيل عبر اتصال خادم SSH. لن يتمكن أي شخص يراقب شبكة Wi-Fi العامة من مراقبة تصفحك أو مراقبة مواقع الويب التي يمكنك الوصول إليها. من منظور أي مواقع ويب تزورها ، سيكون الأمر كما لو كنت جالسًا أمام جهاز الكمبيوتر في المنزل. هذا يعني أيضًا أنه يمكنك استخدام هذه الخدعة للوصول إلى مواقع الويب المخصصة للولايات المتحدة فقط أثناء تواجدك خارج الولايات المتحدة - على افتراض أن لديك حق الوصول إلى خادم SSH في الولايات المتحدة ، بالطبع.

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

لاستخدام إعادة التوجيه الديناميكي ، قم بتشغيل الأمر ssh مع -Dالوسيطة ، كما يلي:

ssh -D local_port [email protected]

على سبيل المثال ، لنفترض أن لديك حق الوصول إلى خادم SSH على ssh.yourhome.comواسم المستخدم الخاص بك على خادم SSH هو bob. تريد استخدام إعادة التوجيه الديناميكي لفتح بروكسي SOCKS في المنفذ 8888 على الكمبيوتر الشخصي الحالي. ستقوم بتشغيل الأمر التالي:

ssh -D 8888 [email protected]

يمكنك بعد ذلك تكوين مستعرض ويب أو تطبيق آخر لاستخدام عنوان IP المحلي (127.0.01) والمنفذ 8888. ستتم إعادة توجيه كل حركة المرور من هذا التطبيق عبر النفق.

للقيام بذلك في PuTTY على Windows ، حدد اتصال> SSH> الأنفاق. حدد الخيار "ديناميكي". بالنسبة لـ "Source Port" ، أدخل المنفذ المحلي.

على سبيل المثال ، إذا أردت إنشاء بروكسي SOCKS على المنفذ 8888 ، فستدخل كمنفذ 8888المصدر. انقر فوق "إضافة" بعد ذلك ثم انقر فوق "فتح" لفتح اتصال SSH. ستحتاج أيضًا إلى إدخال عنوان ومنفذ خادم SSH نفسه على شاشة "Session" الرئيسية قبل الاتصال بالطبع.

يمكنك بعد ذلك تكوين تطبيق للوصول إلى وكيل SOCKS على جهاز الكمبيوتر المحلي (أي عنوان IP 127.0.0.1 ، والذي يشير إلى جهاز الكمبيوتر المحلي الخاص بك) وتحديد المنفذ الصحيح.

ذات صلة: كيفية تكوين خادم وكيل في Firefox

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

عند القيام بذلك في Firefox ، حدد "تكوين الوكيل اليدوي" ، وأدخل "127.0.0.1" في مربع مضيف SOCKS ، وأدخل المنفذ الديناميكي في مربع "المنفذ". اترك مربعات وكيل HTTP ووكيل SSL و FTP Proxy فارغة.

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