ایک آلے کے لیے الٹا SSH: لوپ بیک سننے والا یا روٹ شدہ VPN؟
ایسے آلے کے لیے ایک ہی انتظامی پورٹ جو صرف باہر کال کر سکتا ہے۔ تین شرطیں طے کرتی ہیں کہ الٹا ٹنل کافی ہے یا آپ کو حقیقی روٹ شدہ راستہ درکار ہے۔
آپ کا آلہ کیریئر NAT کے پیچھے ہے، یہ باہر جانے والے کنکشن کھول سکتا ہے، اور ایسا SSH سرور چلاتا ہے جہاں کوئی نہیں پہنچ سکتا۔ آنے والی درخواست عام طور پر "اسے VPN دو" کے طور پر بیان کی جاتی ہے، جو کئی جوابات میں سے ایک ہے۔ اسے قبول کرنے سے پہلے طے کریں کہ آپ کو ایک انتظامی TCP پورٹ چاہیے یا پورے سب نیٹ تک روٹ شدہ راستہ، کیونکہ وہ مختلف نمائش والے مختلف منصوبے ہیں۔
الٹا ٹنل تنگ ورژن کا اچھا جواب دیتا ہے۔ آلہ آپ کے حب پر کال کرتا ہے، حب سے کہتا ہے کہ لوپ بیک پورٹ پر سنے، اور وہ پورٹ واپس اپنی SSH سروس کی طرف بھیجتا ہے۔ پھر منتظمین عوامی انٹرنیٹ کے بجائے حب کے ذریعے سننے والے تک پہنچتے ہیں۔
انتخاب طے کرنے والی تین شرطیں
کسی بھی ترتیب سے پہلے یہ لکھ لیں۔ یہ محدود انتظامی داخلے اور نیٹ ورک توسیع کے درمیان حد ہیں، اور انہیں ملانا ہی وہ راستہ ہے جس سے پانچ سطروں کا ٹنل بے مالک ہموار نیٹ ورک بن جاتا ہے۔
| Condition | Reverse tunnel fits | Something else is needed |
|---|---|---|
| How many services must be reachable? | One, or a small fixed set on loopback | Anything that needs many ports or dynamic discovery |
| Who connects, and how are they authenticated? | Named administrators with their own hub accounts | Third parties, or anything needing per-flow audit you do not control |
| Does the device's own LAN need to be reachable? | No | Yes, so a routed VPN or a managed platform is the honest answer |
تیسری سطر وہی ہے جس پر لوگ بحث کرتے ہیں۔ آلے کے SSH پورٹ تک ٹنل اس کے پڑوسیوں کو آپ کے نیٹ ورک میں نہیں لاتا، اور مزید فارورڈنگ کی زنجیر سے ایسا دکھایا نہیں جانا چاہیے۔ اگر ضرورت واقعی LAN ہو تو یہ کہیں اور اس کے بجائے اسی کو ڈیزائن کریں۔
حب کی طرف: محدود ریلے اکاؤنٹ
ہر آلے کو عوامی کلید کی تصدیق کے ساتھ اور بغیر کسی متعامل سیشن کے اپنا ریلے اکاؤنٹ دیں۔ Match بلاک اس اکاؤنٹ تک محدود ہونے سے اجازت چھوٹی رہتی ہے، اور نجی کلید اسی آلے پر رہتی ہے جہاں اس کی جگہ ہے۔
Match User relay-dev-7
AuthenticationMethods publickey
PubkeyAuthentication yes
AllowTcpForwarding remote
PermitListen 127.0.0.1:21022
GatewayPorts no
MaxSessions 0
PermitTTY no
X11Forwarding no
AllowAgentForwarding no
MaxSessions 0 دلچسپ سطر ہے۔ یہ شیل اور ذیلی نظام کے سیشن مسترد کرتا ہے جبکہ آلے کو درکار فارورڈنگ کی اجازت دیتا ہے، اس لیے چوری شدہ کلید کو متعامل لاگ ان میں نہیں بدلا جا سکتا۔ PermitListen حب کی طرف سننے والے کا پتہ اور پورٹ مقرر کرتا ہے، اور GatewayPorts no اسے حب والے نیٹ ورک کے لیے کھولنے کے بجائے لوپ بیک پر رکھتا ہے۔
دوبارہ لوڈ کرنے سے پہلے مؤثر ترتیب جانچیں، اور ایسا کرتے ہوئے دوسرا سیشن کھلا رکھیں۔ Match بلاک غلطی سے سب پر لاگو ہو جائے، یا کسی آپشن کے نام میں ٹائپو ہو، تو یہ اسی بکس سے خود کو باہر تالا لگانے کا روایتی طریقہ ہے جسے آپ سخت بنا رہے ہیں۔ چلتی ترتیب ڈمپ کریں اور ابھی لکھی گئی فائل پر بھروسا کرنے کے بجائے آپشنز دوبارہ پڑھیں۔ نوٹ کریں کہ آپشن سپورٹ بلڈز کے درمیان مختلف ہوتی ہے، اس لیے نئے سرور میں قبول شدہ سطر پرانے کی طرف سے سادہ نظر انداز ہو سکتی ہے۔
آلے کی طرف: بلند آواز میں ناکام ہونے والی فارورڈنگ
آلہ کنکشن کھولتا ہے اور سننے والے کی درخواست کرتا ہے۔ دلیل میں دو پتے -R مختلف معنی رکھتے ہیں، اور انہیں بائیں سے دائیں پڑھنا یہ یاد رکھنے کا تیز ترین طریقہ ہے کہ کون کون ہے۔
ssh -NT \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 \
-R 127.0.0.1:21022:127.0.0.1:22 \
[email protected]
بائیں جوڑی وہ ہے جہاں حب کو سننا چاہیے۔ دائیں جوڑی وہ ہے جس سے آلہ جڑتا ہے جب درخواست آتی ہے، جو آلے کی اپنی طرف سے حل ہوتی ہے۔ انہیں بدل دینے سے ایسا ٹنل بنتا ہے جو صاف اوپر آتا ہے اور غلط جگہ بھیجتا ہے، جو ناکامی سے بھی بدتر ہے۔
ExitOnForwardFailure=yes درخواست کردہ سننے والا قائم نہ ہو سکنے پر کمانڈ کو باہر نکلنے پر مجبور کرتا ہے، اس لیے ری اسٹارٹ لوپ آدھا چلتے سیشن کو چھوڑنے کے بجائے آپ کو سچ بتاتا ہے۔ مقامی SSH سروس کے بعد میں صحت مند ہونے کے بارے میں یہ کچھ نہیں کہتا، اس لیے اسے پروسیس مینیجر اور کبھی کبھار حقیقی کنکشن ٹیسٹ کے ساتھ جوڑیں۔
اضافی ہاپ سے بچنے کے لیے لوپ بیک سننے کا پتہ کبھی وائلڈ کارڈ سے نہ بدلیں۔ وہی ایک تبدیلی انتظامی راستے اور عوامی طور پر پہنچنے والے پورٹ کے درمیان فرق ہے، اور یہ عام طور پر ڈیبگ کرتے وقت ہوتی ہے اور پھر رہ جاتی ہے۔ اگر ساتھی حب کے ذریعے پورٹ تک نہ پہنچ سکے تو بائنڈ کو وسیع کرنے کے بجائے جمپ ترتیب درست کریں۔ اس ڈیزائن کی پوری سیکیورٹی دلیل لوپ بیک ہے۔
حب کے ذریعے منتظم کی رسائی
حب پر عام اکاؤنٹ رکھنے والا منتظم اس کے ذریعے فارورڈ شدہ پورٹ پر چھلانگ لگا سکتا ہے۔ ریلے اکاؤنٹ اس کے لیے استعمال نہیں ہوتا، اور انہیں الگ رکھنے کا مطلب یہی ہے۔
ssh -J [email protected] -o HostKeyAlias=device-7 \
-p 21022 [email protected]
اپنے منتخب کردہ عرف کے تحت آلے کی ہوسٹ کلید تصدیق کریں، کیونکہ وہی کلید زنجیر کے آخر میں آلے کی شناخت کرتی ہے اور ٹنل صرف نقل و حمل ہے۔ سرے سے سرے تک لاگ ان اب بھی دونوں سروں کی تصدیق کرتا ہے؛ مشترکہ حب پر ختم ہونے والا ٹنل خود بخود اسے قابل اعتماد راستہ نہیں بناتا۔
لائف سائیکل کی ملکیت لیں
آلے کی کمانڈ کو پروسیس مینیجر کے تحت بالکل ایک فعال مثال اور جان بوجھ کر منتخب کردہ ری اسٹارٹ پالیسی کے ساتھ چلائیں۔ کیپ الائیو آپشنز مردہ ساتھی کا پتہ لگاتے ہیں؛ وہ باہر نکل چکی پروسیس کو زندہ نہیں کرتے۔
پھر ڈی کمیشن کا طریقہ لکھیں۔ ہر آلے کو اپنا سننے والا اور اپنی کلید ملتی ہے، اس لیے ڈی کمیشن کا مطلب وہ اکاؤنٹ منسوخ کرنا اور وہ کلید ہٹانا ہے، پورے بیڑے میں مشترکہ راز گھمانا نہیں۔
آخر میں یاد رکھیں کہ لوپ بیک آپ کو کیا دیتا ہے۔ یہ نیٹ ورک کی نمائش محدود کرتا ہے اور مشترکہ حب پر دوسرے مقامی صارفین کے بارے میں کچھ نہیں کرتا، اس لیے حب کی اپنی رسائی پالیسی اب بھی درست ہونی چاہیے۔ sshd_config کا حوالہ اوپر استعمال ہونے والے ہر آپشن کی دستاویز کرتا ہے، اور ان میں سے کسی کو وسیع کرنے سے پہلے فارورڈنگ کے حصے پورے پڑھنے کے قابل ہیں۔