العودة
أنشئ نفق localhost على خادمك الخاص باستخدام OpenSSH وnginx
SiTech AI Team2 دقيقة قراءة

أنشئ نفق localhost على خادمك الخاص باستخدام OpenSSH وnginx

يجمع تكوين الاستضافة الذاتية بين إعادة التوجيه عن بُعد في OpenSSH وnginx لنشر معاينة localhost، وإضافة TLS بدل البدل، وحماية الروابط المشتركة ببيانات وصول مبنية على التجزئة ومحددة بمدة صلاحية.

إعادة توجيه المعاينة المحلية

يمكن مشاركة معاينة مدونة تعمل على localhost:8080 عبر نفق استضافة ذاتية دون خدمة تجارية. يطلب الأمر ssh -N -R 0:localhost:8080 web02.luffy.cx من OpenSSH إعادة توجيه منفذ بعيد إلى الخدمة المحلية. تفرض قيمة المنفذ البعيد 0 على الخادم تخصيص منفذ حر، وهو 41535 في هذا المثال.

ينهي nginx على الخادم البعيد اتصالات HTTPS ويوسط الطلبات إلى منفذ loopback المكشوف. يأخذ تعبير server-name المنفذ من اسم مضيف النفق، مما يتيح لـ nginx توجيه حركة المرور إلى إعادة التوجيه المحلية الصحيحة. يتطلب التكوين أيضاً سجل DNS بدل البدل *.ssh.luffy.cx وشهادة بدل البدل من Let's Encrypt.

حماية عناوين URL المشتركة

دون حماية إضافية، يظل المنفذ المكشوف هو السر الوحيد الذي يخفي المحتوى. يحسّن التكوين التحكم في الوصول عبر ngx_http_secure_link_module، الذي يحسب التجزئة من قيم الطلب والمفتاح السري. ونظراً لأن التجزئة المشفرة بـ base64 لا يمكن وضعها في اسم نطاق حساس لحالة الأحرف، تُرسل كجزء من اسم مستخدم HTTP Basic Authentication مع علامة وقت انتهاء الصلاحية.

يقرأ Nginx اسم المستخدم من المتغير $remote_user. يفصل تعبير map التجزئة وعلامة وقت الانتهاء عن بعضهما، بينما يجمع تعبير secure link علامة الوقت والمنفذ المخصص والمفتاح السري المكوّن للتحقق. التجزئة غير الموجودة أو غير الصحيحة تؤدي إلى استجابة 401 مع ترويسة WWW-Authenticate. الرابط منتهي الصلاحية يؤدي إلى استجابة 410. قبل وسط الطلب الصحيح، يحذف nginx ترويسة Authorization وهو مكوّن لدعم اتصالات WebSocket.

توليد روابط النفق

تُولَّد تجزئة الرابط من وقت الانتهاء والمنفذ والمفتاح السري عبر عمليات MD5 وbase64 في OpenSSL، ثم يتحول الناتج إلى رمز آمن لعنوان URL. يستخدم السكربت المساعد مدة حياة 86400 ثانية. ونظراً لأن OpenSSH لا يكشف منفذه المخصص كمتغير بيئة، يتصفح السكربت تجزئة العمليات الأصلية للعثور على عمليات sshd-session ومنافذ الاستماع الخاصة بها.

بعد الحصول على المنافذ، يولّد السكربت عنوان URL محمياً لكل منها ويخزن الجلسة بشكل واضح. يطلق سجل تكوين SSH المسمى http-over-ssh المساعد على الخادم البعيد. يعتمد التكوين الناتج على OpenSSH فقط وnginx المُشغَّل هناك بالفعل، بينما يتوفر تكوين NixOS منفصل لإدارة المساعد على NixOS.

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.