एउटै यन्त्रका लागि रिभर्स 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 सन्दर्भ माथि प्रयोग गरिएका प्रत्येक विकल्पको दस्तावेजीकरण गर्छ, र तीमध्ये कुनै पनि फराकिलो बनाउनुअघि फर्वार्डिङ खण्ड पूरा पढ्न लायक छ।