मैं ssh -L से -D के बीच के अंतर को समझने की कोशिश कर रहा हूं। क्या इसके अलावा कुछ और है -D केवल SOCKS है?
धन्यवाद!
मैं ssh -L से -D के बीच के अंतर को समझने की कोशिश कर रहा हूं। क्या इसके अलावा कुछ और है -D केवल SOCKS है?
धन्यवाद!
जवाबों:
ssh -L
एक स्थानीय बंदरगाह खोलता है। सब कुछ जो आप उस पोर्ट को भेजते हैं वह ssh कनेक्शन के माध्यम से डाला जाता है और सर्वर के माध्यम से निकलता है। यदि आप करते हैं, उदाहरण के लिए ssh -L 4444:google.com:80
, यदि आप http://localhost:4444
अपने ब्राउज़र पर खोलते हैं, तो आप वास्तव में Google का पृष्ठ देखेंगे।
ssh -D
एक स्थानीय पोर्ट खोलता है, लेकिन इसके साथ एक विशिष्ट समापन बिंदु नहीं है -L
। इसके बजाय, यह SOCKS प्रॉक्सी होने का दिखावा करता है। यदि आप खोलते हैं, उदाहरण के लिए ssh -D 7777
, जब आप अपने ब्राउज़र को localhost:7777
अपने SOCKS प्रॉक्सी के रूप में उपयोग करने के लिए कहते हैं , तो आपका ब्राउज़र अनुरोध सब कुछ ssh सुरंग के माध्यम से जाता है। सार्वजनिक इंटरनेट पर, ऐसा लगता है जैसे आप अपने कंप्यूटर से अपने ssh सर्वर से ब्राउज़ कर रहे थे।
The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
ssh -L 4444:google.com:80
मेरे लिए काम नहीं करता है, इसे लॉग इन करने के लिए एक और पैरामीटर की आवश्यकता होती है, जैसे user@example.com
SSH में, -D
एक स्थानीय "डायनामिक" एप्लिकेशन-लेवल पोर्ट को अग्रेषित करता है।
SSH -D [bind_address:]port
एक स्थानीय "डायनामिक" एप्लिकेशन-स्तरीय पोर्ट अग्रेषण निर्दिष्ट करता है। यह स्थानीय साइड पर पोर्ट को सुनने के लिए एक सॉकेट आवंटित करके काम करता है, वैकल्पिक रूप से निर्दिष्ट bind_address के लिए बाध्य है। जब भी इस पोर्ट से कनेक्शन बनाया जाता है, तो कनेक्शन को सुरक्षित चैनल पर भेज दिया जाता है, और एप्लिकेशन प्रोटोकॉल का उपयोग तब यह निर्धारित करने के लिए किया जाता है कि रिमोट मशीन से कहां कनेक्ट होना है। वर्तमान में SOCKS4 और SOCKS5 प्रोटोकॉल समर्थित हैं, और ssh एक SOCKS सर्वर के रूप में कार्य करेगा। केवल रूट ही विशेषाधिकार प्राप्त बंदरगाहों को आगे बढ़ा सकते हैं। कॉन्फ़िगरेशन फ़ाइल में डायनेमिक पोर्ट फ़ॉरवर्डिंग को भी निर्दिष्ट किया जा सकता है।
IPv6 पतों को एक वैकल्पिक वाक्यविन्यास के साथ निर्दिष्ट किया जा सकता है: [bind_address /] पोर्ट या वर्गाकार कोष्ठक में पता संलग्न करके।
केवल सुपरसुसर विशेषाधिकार प्राप्त बंदरगाहों को आगे बढ़ा सकते हैं। डिफ़ॉल्ट रूप से, स्थानीय पोर्ट गेटवेपोर्ट्स सेटिंग के अनुसार बाध्य है। हालाँकि, एक स्पष्ट bind_address का उपयोग किसी विशिष्ट पते से कनेक्शन को बांधने के लिए किया जा सकता है। "लोकलहोस्ट" का bind_address इंगित करता है कि श्रवण पोर्ट केवल स्थानीय उपयोग के लिए बाध्य है, जबकि एक खाली पता या '*' इंगित करता है कि पोर्ट सभी इंटरफेस से उपलब्ध होना चाहिए।
इसके अतिरिक्त, ssh -L
निर्दिष्ट करता है कि स्थानीय (क्लाइंट) होस्ट पर दिए गए पोर्ट को दिए गए होस्ट और पोर्ट की तरफ पोर्ट पर भेजा जाना है।
SSH -L [bind_address:]port:host:hostport
निर्दिष्ट करता है कि स्थानीय (क्लाइंट) होस्ट पर दिए गए पोर्ट को दिए गए होस्ट और रिमोट साइड पर पोर्ट को अग्रेषित किया जाना है। यह स्थानीय साइड पर पोर्ट को सुनने के लिए एक सॉकेट आवंटित करके काम करता है, वैकल्पिक रूप से निर्दिष्ट bind_address के लिए बाध्य है। जब भी इस पोर्ट से कनेक्शन बनाया जाता है, तो कनेक्शन को सुरक्षित चैनल पर भेज दिया जाता है, और रिमोट मशीन से पोर्ट होस्टपोर्ट होस्ट करने के लिए कनेक्शन बनाया जाता है। पोर्ट फ़ॉरवर्डिंग को कॉन्फ़िगरेशन फ़ाइल में भी निर्दिष्ट किया जा सकता है। IPv6 पते को एक वैकल्पिक वाक्यविन्यास के साथ निर्दिष्ट किया जा सकता है: [bind_address /] पोर्ट / होस्ट / होस्टपोर्ट या वर्ग कोष्ठक में पता संलग्न करके।
केवल सुपरसुसर विशेषाधिकार प्राप्त बंदरगाहों को आगे बढ़ा सकते हैं। डिफ़ॉल्ट रूप से, स्थानीय पोर्ट गेटवेपोर्ट्स सेटिंग के अनुसार बाध्य है। हालाँकि, एक स्पष्ट bind_address का उपयोग किसी विशिष्ट पते से कनेक्शन को बांधने के लिए किया जा सकता है। "लोकलहोस्ट" का bind_address इंगित करता है कि श्रवण पोर्ट केवल स्थानीय उपयोग के लिए बाध्य है, जबकि एक खाली पता या '*' इंगित करता है कि पोर्ट सभी इंटरफेस से उपलब्ध होना चाहिए।