
دليل عملي لنفقات SSH: تحويل المنافذ المحلي والبعيد
دليل عملي لنفقات SSH من iximiuz Labs: كيف تصل إعادة توجيه المنافذ المحلية (-L) إلى الخدمات خلف خادم العبور، وكيف يعرض -R خدمة محلية للخارج، وكيف يحوّل -D عميل SSH إلى وسيط SOCKS.
SSH تقنية قديمة لا تنوي الاختفاء، وما زالت أنفاقها تنجز بأمر واحد ما يصعب على أدوات أحدث مجاراته: الوصول إلى خدمة داخلية في VPC عبر خادم عبور عام، أو فتح منفذ localhost لجهاز تطوير بعيد في المتصفح، أو عرض خادم محلي على العالم الخارجي. يشرح دليل إيفان فيليتشكو العملي على iximiuz Labs التحويل المحلي والبعيد والديناميكي للمنافذ؛ وتعمل المختبرات على بيئة من أربعة مضيفين وثلاث شبكات.
تحويل المنافذ المحلي
تبدأ العلامة -L التحويل من جهة العميل: يستمع عميل SSH إلى منفذ محلي، وتُمرَّر الحركة الواردة إليه إلى remote_addr:remote_port كما يُرى من الجهاز الذي اتصلت به. الصيغة هي ssh -L [local_addr:]local_port:remote_addr:remote_port [user@]sshd_addr، وssh -f -N -L يشغّل الجلسة في الخلفية. في المختبر الأول، خادم ويب مرتبط بالعنوان 127.0.0.1:80 على المضيف البعيد غير متاح عبر الشبكة؛ وبعد ssh -f -N -L 8080:localhost:80 203.0.113.30 تستجيب الصفحة نفسها على المنفذ المحلي 8080.
يمكن للأمر التحويل إلى جهاز غير خادم SSH نفسه. في ssh -L 8081:172.16.0.40:80 203.0.113.30 يستقبل خادم العبور الاتصال ويفتح بنفسه القفزة الثانية إلى مضيف VPC الخاص. أما المنافذ المرتبطة بـ loopback فتتطلب حيلة إضافية، لأن خادم العبور هو من يحل التحويل ولا يرى 127.0.0.1 على الهدف. تضيف العلامة -J قفزة عبر خادم العبور وتنهي الجلسة على الهدف نفسه: ssh -f -N -J 203.0.113.30 -L 8082:localhost:9000 172.16.0.40 يجعل منفذ تصحيح غير مرئي للشبكة ظاهرًا محليًا.
تحويل المنافذ البعيد
الحالة المعاكسة — عرض خدمة محلية عبر بوابة عامة — تستخدم ssh -R [remote_addr:]remote_port:local_addr:local_port [user@]gateway_addr، حيث يفتح خادم sshd المنفذ الإضافي. والفخ: افتراضيًا يرتبط النفق بـ localhost الخاص بالبوابة فقط، فتبقى الخدمة متاحة من داخل البوابة وحدها؛ ولنشرها على كل الواجهات يلزم GatewayPorts yes في sshd_config. بهذا الإعداد يعرض ssh -f -N -R 0.0.0.0:8080:localhost:80 203.0.113.30 خادم ويب محمولًا لا يعمل إلا على localhost على الشبكة. ويتيح أحد الأشكال لعميل SSH أن يقوم بدور مضيف القفز ويعرض جهازًا في شبكة منزلية لا تصل إليها البوابة.
التحويل الديناميكي: SSH كوسيط SOCKS
بدلًا من ربط منفذ محلي واحد بوجهة واحدة، يحوّل ssh -D [local_addr:]local_port عميل SSH إلى وسيط SOCKS محلي. كل اتصال يحدد وجهته بنفسه ويحلها خادم SSH، لذا يصل منفذ واحد عبر الوسيط إلى كل مضيف ومنفذ خلف خادم العبور: يكفي curl --socks5-hostname localhost:1080 172.16.0.40:80 إذا كان العميل يتحدث SOCKS. وإسقاط الوجهة من -R يعكس الفكرة على جهة الخادم: يصبح sshd نفسه وسيط SOCKS، ويحتاج هذا النمط إلى OpenSSH 7.6 أو أحدث على العميل.
كيف تتذكر العلامات
خلاصة فيليتشكو قصيرة: -L يعرض خدمة بعيدة على منفذ محلي، و-R يعرض خدمة محلية على منفذ بعيد، و-D وسيط SOCKS محلي، و-R بلا وجهة وسيط على الخادم. والحفظ: ssh -L local:remote وssh -R remote:local — والجانب الأيسر هو من يفتح المنفذ الجديد دائمًا.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.