Http या https पर ssh का उपयोग कैसे करें?


42

मेरे पास कॉर्पोरेट फ़ायरवॉल के पीछे एक linux fedora21 क्लाइंट लैपटॉप है (जो http और https पोर्ट के माध्यम से 22 ssh नहीं देता है) और मेरे पास अपने राउटर के पीछे घर पर एक linux fedora21 सर्वर है। जब मैं अपने होम सर्वर के सार्वजनिक आईपी पते को निर्दिष्ट करता हूं, तो https के साथ ब्राउज़िंग करना (क्योंकि मैंने अपना होम राउटर कॉन्फ़िगर किया है)

Http (s) पोर्ट पर मेरे होम सर्वर पर ssh (रिमोट शेल) को भेजना संभव है?

मैंने एक टूल को बुलाया corkscrew। क्या इससे मदद मिलेगी?

opensshdऔर httpdहोम सर्वर पर चलते हैं। विन्यास की और क्या आवश्यकता होगी?


1
पोर्ट 443 पर सुनने के लिए अपना sshd घर पर रखें, लेकिन आपको अपने घर httpd पर पोर्ट 443 को अक्षम करना चाहिए।
तालीज़ीन

मैं हालांकि यह काफी नहीं है। मुझे git के लिए httpd (s) भी चाहिए। इसलिए मुझे 443 पर सुनने की एक httpd है।
MMM

tryptunnel आज़माएं - yum installptunnel http://www.nocrew.org/software/httptunnel.html , या जैसा कि आपने अपने प्रश्न में उल्लेख किया है: corkscrew।
तावीज़िन

किसी भी तरह से, sshd 22 को सुनेगा, और httpd को 80/443 पर और canptunnel या corkscrew ट्रैफिक httpd sshd को प्राप्त होगा?
MMM

हाँ। इसे आपकी सेवाओं के बंदरगाहों को बदलने की जरूरत नहीं है।
तावीज़िन

जवाबों:


42

क्या संभव है यह इस बात पर निर्भर करता है कि फ़ायरवॉल क्या अनुमति देता है।

यदि फ़ायरवॉल पोर्ट 443 पर मनमाना यातायात की अनुमति देता है

कुछ फायरवॉल्स सरल तरीके से बाहर ले जाते हैं और पोर्ट 443 पर कुछ भी अनुमति देते हैं। अगर ऐसा है, तो अपने होम सर्वर तक पहुंचने का सबसे आसान तरीका यह है कि आप पोर्ट 443 पर एसएसएच कनेक्शन को सुनें। यदि आपकी मशीन सीधे इंटरनेट से जुड़ी है, तो जोड़ने Port 443के लिए /etc/ssh/sshd_configया /etc/sshd_configबस नीचे लाइन है कि कहते हैं Port 22। यदि आपकी मशीन राउटर / फ़ायरवॉल के पीछे है जो आने वाले कनेक्शन को रीडायरेक्ट करती है, तो इसे अपने सर्वर के पोर्ट 22 में 443 को पोर्ट करने के लिए इनकमिंग इनडायरेक्ट कनेक्शन कुछ इस तरह से करें।

iptables -t nat -I PREROUTING -p tcp -i wan0 --dport 443 -j DNAT --to-destination 10.1.2.3:22

wan0आपके राउटर पर WAN इंटरफ़ेस कहां है और 10.1.2.3 आपके होम नेटवर्क पर आपके सर्वर का IP एड्रेस है।

यदि आप अपने होम सर्वर को पोर्ट 443 पर HTTPS कनेक्शन और SSH कनेक्शन दोनों को सुनने की अनुमति देना चाहते हैं, तो यह संभव है - SSH और HTTPS ट्रैफ़िक को आसानी से अलग किया जा सकता है (SSH में, सर्वर पहले बात करता है, जबकि HTTP और HTTPS में, क्लाइंट बातचीत करता है। प्रथम)। देखें http://blog.stalkr.net/2012/02/sshhttps-multiplexing-with-sshttp.html और http://wrouesnel.github.io/articles/Setting%20up%20sshttp/ यह कैसे स्थापित करने के लिए पर ट्यूटोरियल के लिए sshttp के साथ , और पोर्ट 80 या 443 पर SSH भी है जबकि वेबसर्वर (nginx) इन पोर्ट पर चल रहा है

यदि आपके पास एक वेब प्रॉक्सी है जो CONNECT टनलिंग की अनुमति देता है

कुछ फायरवॉल सभी आउटगोइंग कनेक्शन को ब्लॉक करते हैं, लेकिन वेब को एक प्रॉक्सी के माध्यम से ब्राउज़ करने की अनुमति देते हैं जो HTTPCONNECT विधि को फ़ायरवॉल में एक छेद को प्रभावी ढंग से छेदने की अनुमति देता है । CONNECTविधि, कुछ बंदरगाहों के लिए प्रतिबंधित किया जा सकता है ताकि आप ऊपर के रूप में 443 पोर्ट पर सुनने के साथ इस गठबंधन करने के लिए आवश्यकता हो सकती है।

SSH को प्रॉक्सी के माध्यम से जाने के लिए, आप corkscrew जैसे टूल का उपयोग कर सकते हैं । अपने में ~/.ssh/config, एक जोड़ने के ProxyCommandलिए, नीचे एक की तरह लाइन यदि आपकी वेब प्रॉक्सी है http://web-proxy.work.example.com:3128:

Host home
HostName mmm.dyndns.example.net
ProxyCommand corkscrew web-proxy.work.example.com 3128 %h %p

HTTP (S) में रैपिंग SSH

कुछ फायरवॉल एसएसएच ट्रैफिक को पोर्ट 443 पर भी अनुमति नहीं देते हैं। इनसे निपटने के लिए, आपको एसएसएच को किसी ऐसी चीज में बदलने या टनल बनाने की जरूरत है जो फायरवॉल के माध्यम से होती है। प्रॉक्‍सीट्यूनलाइन के साथ ऐसा करने पर एक ट्यूटोरियल के लिए http://dag.wiee.rs/howto/ssh-http-tunneling/ देखें ।


443 चाल ने किया! मुझे आश्चर्य हुआ कि यह कार्य :) - किसी भी प्रकार की दृष्टिहीनता क्यों कि अधिकांश फायरवॉल के साथ ऐसा प्रतीत होता है?
AK_

@AK_ क्योंकि यह एक फ़ायरवॉल के लिए SSH से TLS को अलग करना संभव है, यह एक अतिरिक्त कॉन्फ़िगरेशन चरण है और प्रदर्शन में अधिक खर्च होता है, जब यह आउटगोइंग कनेक्शन की बात आती है, तो कोई वास्तविक लाभ नहीं होता है (क्योंकि टीएलएस में कुछ भी ट्यून किया जा सकता है)।
गाइल्स का SO- बुराई का होना बंद '

@Gilles, क्या ऐसे भी प्रॉक्सी सर्वर हैं जो HTTPS को ब्लॉक करते हैं जो अभी तक HTTP कनेक्ट HTTPS को अनुमति देते हैं?
पचेरियर

1
@ स्पेसियर उनमें से कई। ऐसा नहीं है कि प्रॉक्सी HTTPS को ब्लॉक करता है - एक प्रॉक्सी कनेक्शन को ब्लॉक नहीं करता है जो प्रॉक्सी को बायपास करता है - यह है कि डायरेक्ट कनेक्शन अवरुद्ध हैं, लेकिन प्रॉक्सी किसी भी ट्रैफ़िक के साथ कनेक्ट करने की अनुमति देता है बशर्ते कि यह 443 पोर्ट है। वैसे भी HTTPS को फ़िल्टर करने का कोई वास्तविक तरीका नहीं है। , ट्रस्ट इंजेक्शन और प्रमाण पत्र पुनर्लेखन की जड़ की कमी, जो एक बहुत बुरा विचार है।
गाइल्स का SO- बुराई पर रोक '19

ध्यान दें कि आप प्रॉक्सी ProxyCommand nc -X connect -x __proxy_IP__:__port__ %h %p
कॉमैंड

2

आप एक और तरीका आज़मा सकते हैं, एक वेब सर्वर सेट कर सकते हैं, जो आपके सर्वर को सुरक्षित कर सकता है,

https://github.com/huashengdun/webssh


1

आप उपयोग कर सकते हैं sslh अगर आप दोनों एक HTTPS सर्वर और एक ही पोर्ट 443 पर एक sshd सर्वर चलाना चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.