क्या पोर्ट 80 के माध्यम से एसएसएच संभव है?


20

मैं एक नेटवर्क फ़ायरवॉल के पीछे हूँ जो मुझे डिफ़ॉल्ट पोर्ट के माध्यम से ssh नहीं करने देता है। उसके कारण, मैं अपनी रिपॉजिटरी में किसी भी bzr शाखाओं को नहीं बढ़ा सकता। मैं जानना चाहूंगा कि क्या पोर्ट 80 के माध्यम से ssh को किसी तरह प्रॉक्सी करना संभव है, ताकि मैं शाखाओं को धक्का दे सकूं।

मैंने सुना है कि कॉर्कस्क्रू आपको ऐसा करने देता है, लेकिन मुझे यकीन नहीं है कि वास्तव में ऐसा कैसे किया जाए।

यदि आप किसी भी कार्यशील प्रॉक्सी सर्वर को जानते हैं जो आपको ऐसा करने देता है, तो कृपया उनका उल्लेख करें।


2
man sshपोर्ट से पता चलता है: होस्ट: होस्टपोर्ट। तो कोशिश करो ssh 80:server.com
MarkovCh1

कि -L या -R के माध्यम से एक सुरंग स्थापित करने के लिए है। तो आपको इसके माध्यम से सुरंग बनाने के लिए एक और बॉक्स की आवश्यकता होगी।
सीज़ियम

1
इन्हें भी देखें unix.stackexchange.com/a/190612/4319
IMZ - इवान Zakharyaschev

जवाबों:


19

एक अच्छा कॉर्पोरेट फ़ायरवॉल पोर्ट की परवाह किए बिना ट्रैफ़िक का निरीक्षण करेगा ताकि पोर्ट बदलते समय बस काम न करे।

यदि आपके पास सर्वर पर नियंत्रण है, और फिर भी आप इसे आज़माना चाहते हैं, तो आप sshd पोर्ट को पोर्ट 80 में बदल सकते हैं। चेतावनी यदि आपके पास पोर्ट 80 (सर्वर पर) पर कुछ और चल रहा है तो यह काम नहीं करेगा और इसका मतलब पूरी तरह से होगा। सर्वर के लिए SSH पहुँच खो!

आप संपादित करने की आवश्यकता होगी /etc/ssh/sshd_configऔर बदलने Portके लिए 80। फिर भागो

sudo restart ssh

और फिर कनेक्ट करें:

ssh user@host -p80

आपका bzr पथ तब कुछ इस तरह दिखाई देगा: bzr+ssh://host:80/path/


WebDav का उपयोग करने के लिए एक और तरीका है। यह फ़ायरवॉल समस्या के बारे में पूरी तरह से सोचना चाहिए क्योंकि यह सभी पोर्ट 80 पर होता है, लेकिन इसके लिए आपको अपाचे को चलाने और कई चीजों को सेट करने की आवश्यकता होगी:

  1. WebDav स्थापित करें
  2. अपनी शाखा को सही जगह पर ले जाएँ
  3. कनेक्ट करने के लिए bzr-webdav प्लगइन का उपयोग करें

एक वीपीएन एक विकल्प हो सकता है लेकिन अगर sshइसे बंद कर दिया गया है, तो मुझे उम्मीद है कि इसे भी बाहर रखा जाएगा।

आप बस अपने नेटवर्क व्यवस्थापक के साथ एक शब्द रखना चाह सकते हैं। आपको कुछ करने की जरूरत है और वे आपको रोक रहे हैं। यदि उन्हें अवरुद्ध करने का एक कारण मिल गया है ssh, तो संभावना है कि वे किसी भी चरम प्रयास को इसे काफी नकारात्मक रूप से दरकिनार करने के लिए देखेंगे ...

संक्षेप में, उनसे बात करना अधिक सुरक्षित हो सकता है।


7
अपने आईटी विभाग के साथ अपनी आवश्यकताओं पर चर्चा करने के लिए +1। कई वातावरणों में, मेरा शामिल है, इस प्रकार की गतिविधि समाप्ति के लिए आधार होगी।
पैंथर

1
इसके अलावा, अगर वह ssh सर्वर को दूसरे पोर्ट पर सुनने जा रहा है, तो वह फाइल Portमें प्रत्येक पोर्ट के लिए दो लाइनों के साथ, पोर्ट 22 और 80 दोनों पर सुन सकता है /etc/ssh/sshd_config
अज़ेंडेले

मैं एक सूची बनाने से बचूंगा (यह सूची लंबी है और इस पर कुछ वस्तुओं की चर्चा बहुत जल्दी राजनीतिक हो सकती है), लेकिन यह प्रश्न कई स्थितियों को शामिल करता है इसके अलावा एक कर्मचारी जो कंपनी की नीति को दरकिनार करने की मांग कर रहा है, जिसे निष्ठापूर्वक लागू किया जाता है कंपनी का अपना आईटी विभाग। मैं सभी लोगों के लिए आईटी के साथ उनके काम की जरूरतों पर चर्चा कर रहा हूं, लेकिन यह हमेशा लागू नहीं होता है, और कभी-कभी आईटी विभाग भी इसका जवाब देते हैं, "यह ठीक है, लेकिन हम आपको समायोजित करने के लिए कुछ भी नहीं बदल रहे हैं।" अलग-अलग, यह काफी प्रशंसनीय है कि पोर्ट 22 वीपीएन द्वारा अवरुद्ध नहीं है, इसलिए मुझे लगता है कि यह एक कोशिश के लायक है।
एलियाह कगन

@Panther तो कुछ लोगों को उस कॉर्पोरेट शासन को समाप्त करने में भी खुशी होगी।
NeverEndingQueue

15

प्रॉक्सी के माध्यम से एस.एस.एच.

यदि फ़ायरवॉल आपको अनुमति देता है, तो आप किसी भी पोर्ट पर ssh चला सकते हैं, लेकिन इसके लिए ssh सर्वर को उस पोर्ट पर सुनने की आवश्यकता होती है। पोर्ट 80 के काम करने की संभावना नहीं है, क्योंकि फ़ायरवॉल वाले अधिकांश स्थान उस पोर्ट पर ट्रैफ़िक का विश्लेषण करते हैं और HTTP नहीं है। लेकिन पोर्ट 443, जो आम तौर पर HTTPS पोर्ट है, अक्सर काम करता है, क्योंकि SSH और HTTPS एक दूसरे को सॉफ्टवेयर फ़िल्टर करने के लिए बहुत पसंद करते हैं, इसलिए आपका SSH सत्र HTTPS सत्र की तरह दिखेगा। (HTTPS और SSH को अलग करना संभव है, इसलिए यदि फ़ायरवॉल पर्याप्त परिष्कृत है तो यह काम नहीं करेगा।)

यदि आपके पास सर्वर पर नियंत्रण है, तो इसे 22 (सामान्य ssh पोर्ट) के अलावा पोर्ट 443 पर सुनें। आप पोर्ट को कॉन्फ़िगर कर सकते हैं /etc/ssh/sshd_config: एक पंक्ति जोड़ें

Port 443

इसके अलावा Port 22वहाँ पहले से ही होना चाहिए। ध्यान दें कि यह मानता है कि ssh सर्वर भी HTTPS सर्वर नहीं है। यदि यह है, तो आपको एक और पोर्ट खोजने की आवश्यकता होगी जिसे फ़ायरवॉल आपको उपयोग करने या किसी अन्य ssh सर्वर को खोजने की अनुमति देता है (नीचे अग्रेषण देखें)।

यदि आपको अपने वेब ब्राउज़र में एक वेब प्रॉक्सी सेट करने की आवश्यकता नहीं है, तो आप सीधे कनेक्ट करने का प्रयास कर सकते हैं:

ssh -p 443 myserver.example.com

यदि वह काम करता है, तो अपने में एक उपनाम परिभाषित करें ~/.ssh/config:

Host myserver
HostName myserver.example.com
Port 443

यदि आपको अपने वेब ब्राउज़र में एक वेब प्रॉक्सी सेट करने की आवश्यकता है, तो ssh को प्रॉक्सी के माध्यम से जाने के लिए कहें। कॉर्कस्क्रू स्थापित करें । अपने जैसे एक उपनाम को परिभाषित करें ~/.ssh/config, जहाँ http://proxy.acme.com:3128/आप प्रॉक्सी का उपयोग HTTPS से बाहर (उचित होस्ट नाम और पोर्ट द्वारा प्रतिस्थापित) के लिए कर रहे हैं:

Host myserver
HostName myserver.example.com
Port 443
ProxyCommand /usr/bin/corkscrew proxy.acme.com 3128 %h %p

SSH के ऊपर SSH

यदि आप उपरोक्त तकनीकों में से किसी एक के द्वारा बाहर की मशीन से प्राप्त कर सकते हैं, लेकिन जिस मशीन में आप रुचि रखते हैं, उस कनेक्शन का उपयोग करने के लिए नहीं। मान लें कि आप नामक एक मशीन को ssh कर सकते हैं mygatewayऔर आप SSH सर्वर तक पहुंचना चाहते हैं mytarget, तो netcat-openbsd को स्थापित करें mygateway(या, अगर यह उबंटू नहीं चल रहा है, तो सुनिश्चित करें कि यह ncकमांड है)। इसे अपने में रखें ~/.ssh/config:

Host mytarget
ProxyCommand ssh mygateway nc %h %p

अपाचे को एसएसएच

यदि आप जिस होस्ट से कनेक्ट करना चाहते हैं वह पहले से ही अपाचे को चला रहा है और पोर्ट 443 पर सुन रहा है, और उस होस्ट पर आपका नियंत्रण है, तो आप एसएसएच कनेक्शन स्वीकार करने और उन्हें आगे बढ़ाने के लिए इस अपाचे को सेट कर सकते हैं। HTTP (S) पर टनलिंग SSH देखें ।


आप https के लिए corkscrew के बजाय nc का भी उपयोग कर सकते हैं, हाँ? stackoverflow.com/a/15577758/32453
rogerdpack 23

3

मैंने यहाँ एक परिष्कृत समाधान पढ़ा है:

http://benctechnicalblog.blogspot.hu/2011/03/ssh-over-connect-over-port-80.html

आप अपने घर के सर्वर को पोर्ट 80 पर भी वेबसर्वर चलाते हैं, भले ही आप पोर्ट 80 पर घर पर एसएसएच कर सकते हैं।

होम सर्वर मानकर अपाचे चलाता है। विचार में आपके सर्वर में mod_proxy को सक्षम करना शामिल है, फिर इसे लोकलहोस्ट (प्रॉक्सी.कॉन्फ़) से जोड़ने में प्रतिबंधित करना है:

<IfModule mod_proxy.c>
         ProxyRequests On
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Deny from all
        </Proxy>
        <Proxy localhost>
          Allow from all
        </Proxy>
        AllowCONNECT 22
        ProxyVia On
</IfModule>

अब आप लोकलहोस्ट के लिए HTTP कनेक्ट रिक्वेस्ट कर सकते हैं और वेबसर्वर आपके लिए एक सुरंग स्थापित करेगा, आपको केवल यह सुनिश्चित करने की ज़रूरत है कि सभी ट्रैफ़िक आपके प्रॉक्सी से होकर गुजरे:

ssh -o 'ProxyCommand nc -X connect -x myhost.example.com:80 localhost 22' myhost.example.com

सुनिश्चित करें कि SSH के लिए लोकलहोस्ट कनेक्शन विशेषाधिकार प्राप्त नहीं है (अजनबियों को अंदर जाने से बचने के लिए ...)

यह काम करना चाहिए यदि आप एक राउटर के पीछे हैं जो केवल 80 पोर्ट को अनुमति देता है।

यदि आप एक प्रॉक्सी के पीछे हैं (इसलिए आपको वेब प्राप्त करने के लिए अपने ब्राउज़र में प्रॉक्सी सेट करने की आवश्यकता है), तो आपको पहले अपने स्वयं के होस्ट के लिए एक सुरंग स्थापित करने की आवश्यकता होगी, फिर अपने होस्ट को प्राप्त करने के लिए इस सुरंग के अंदर एक और कनेक्ट अनुरोध जारी करें। यह अधिक परिष्कृत है, आपको इसके लिए 2 नेटकैट्स का उपयोग करने की आवश्यकता होगी।

सब कुछ संभव है, लेकिन इसे अपने जोखिम के लिए करें ...

अपडेट करें:

या बस, बस एक वेब एप्लिकेशन का उपयोग करें जो आपको एक ब्राउज़र के माध्यम से एसएसएच देता है। http://en.wikipedia.org/wiki/Web-based_SSH


2

यदि आपके पास SSH पोर्ट को 80 पोर्ट में बदलने के लिए सर्वर पर कोई नियंत्रण नहीं है या यदि आप SSH पोर्ट 80 पर नहीं कर सकते हैं क्योंकि फ़ायरवॉल आपको पोर्ट 80 के माध्यम से ऐसे डेटा को स्थानांतरित करने से रोकता है, तो आप TOR आज़मा सकते हैं।

TOR एक बहुत बड़ा नेटवर्क है। आपका कंप्यूटर दुनिया में कहीं और दूसरे कंप्यूटर से जुड़ता है, वह कंप्यूटर दूसरे से तब तक जुड़ता है जब तक वह SSH सर्वर तक नहीं पहुंच जाता। यह सभी फ़ायरवॉल के अनुकूल है, पोर्ट 443 पर होता है (जो आपकी कंपनी को ब्लॉक नहीं करता है, या फिर .. ठीक है, यह इतना स्मार्ट नहीं है)। यह सचमुच एक विशाल प्रॉक्सी या वीपीएन है, और यह एन्क्रिप्टेड भी है। इस तरह, आप किसी भी पोर्ट पर होस्ट होस्ट कर सकते हैं (पोर्ट 22 पर सर्वर का SSH)।

इसे www.torproject.org पर ऑनलाइन देखें ।


2

मुझे खेद है, मुझे शैतानों के वकील की भूमिका निभानी है।

मुझे पता है कि ऐसा करने के लिए सबसे अधिक संभावना है, हालांकि, आपके नेटवर्किंग / फ़ायरवॉल व्यवस्थापक को आपके द्वारा खोजे जा रहे विशिष्ट पोर्ट को खोलने की आवश्यकता क्यों नहीं होगी? एक सुरक्षा के दृष्टिकोण से, क्या आप यह मौका लेना चाहते हैं कि वेब-निरीक्षण कुछ भी याद नहीं करेगा? यदि यह std ट्रैफ़िक के लिए पोर्ट 80 को बाय-पास करने के लिए कॉन्फ़िगर किया गया है, और आप अपने आप को हैर्म तरीके से रख रहे हैं।

मैं ऊपर दिए गए कुछ सुझावों से सहमत हूं, जहां बिंदु से बिंदु वीपीएन अधिक सुरक्षित विकल्प हो सकता है। फिर से, एक सुरक्षा दृष्टिकोण से, मुझे यह जानने में दिलचस्पी होगी कि आप वास्तव में सुरक्षा नीतियों को दरकिनार कर रहे हैं और आप एक्सेस के लिए अपने सर्वर को dmz या बैकबोन में क्यों नहीं डाल सकते हैं। सिर्फ मैं। सौभाग्य।


2
नेटवर्क व्यवस्थापक से बात करना हमेशा संभव नहीं होता है, और नेटवर्क व्यवस्थापक हमेशा उचित नहीं होते हैं।
जेरेमी बिच

उदाहरण के लिए, यदि आप कैफे में बैठे हैं, तो वाईफाई से जुड़े हैं, लेकिन व्यवस्थापक प्रतिबंधित पहुंच है (और आपको अभी भी कनेक्ट करने की आवश्यकता है)।
पुराना-ऊफो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.