सवाल एसएस सुरंग को जनता के लिए कैसे खोलें?


खैर, वापस संदर्भित इस सवाल, मैं आदेश चला रहा हूँ

ssh -R 8080:localhost:80 -N root@example.com

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

संपादित करें: ऐसा लगता है जैसे रिमोट साइड केवल सभी इंटरफेस के बजाय स्थानीयहोस्ट पर बांधता है।

संपादित करें 2: क्लाइंट मैक ओएस एक्स 10.6 है और सर्वर लिनक्स मिंट है, लेकिन वे ओपनएसएसएच दोनों हैं।


140
2018-04-27 22:14


मूल


सार्वजनिक आईपी का क्या अर्थ है? यदि आप राउटर के माध्यम से और इंटरनेट के माध्यम से स्थानीय कंप्यूटर से कनेक्ट करने का प्रयास कर रहे हैं, तो अधिकतर राउटर ऐसे लूपबैक की अनुमति नहीं देंगे। - harrymc


जवाब:


यदि आप ssh के लिए मैन पेज को चेक करते हैं, तो आपको इसके लिए सिंटैक्स मिल जाएगा -R पढ़ता है:

-आर [bind_address:]बंदरगाह:मेज़बान:होस्ट पोर्ट

कब bind_address छोड़ा गया है (जैसा कि आपके उदाहरण में है), बंदरगाह केवल लूपबैक इंटरफ़ेस पर बाध्य है। इसे सभी इंटरफेस से बांधने के लिए, उपयोग करें

ssh -R \*:8080:localhost:80 -N root@example.com

या

ssh -R 0.0.0.0:8080:localhost:80 -N root@example.com

या

ssh -R "[::]:8080:localhost:80" -N root@example.com

पहला संस्करण व्यक्तिगत रूप से सभी इंटरफेस से जुड़ा हुआ है। दूसरा संस्करण एक सामान्य आईपीवी 4-केवल बांध बनाता है, जिसका मतलब है कि पोर्ट आईपीवी 4 के माध्यम से सभी इंटरफेस पर पहुंच योग्य है। तीसरा संस्करण शायद तकनीकी रूप से पहले के बराबर है, लेकिन फिर से यह केवल एक ही बांध बनाता है ::, जिसका मतलब है कि बंदरगाह आईपीवी 6 के माध्यम से और आईपीवी 4 के माध्यम से पहुंचा जा सकता है आईपीवी 4 मैप किए गए आईपीवी 6 पते (विंडोज़, ओपनबीएसडी पर काम नहीं करता है)। (आपको उद्धरण की आवश्यकता है क्योंकि [::] अन्यथा एक ग्लोब के रूप में व्याख्या किया जा सकता है।)

ध्यान दें कि यदि आप ओपनएसएसएच का उपयोग करते हैं sshd सर्वर, सर्वर है GatewayPorts विकल्प सक्षम होना चाहिए (करने के लिए सेट yes या clientspecified) इसके लिए काम करने के लिए (फ़ाइल की जांच करें /etc/ssh/sshd_config सर्वर पर)। अन्यथा (इस विकल्प के लिए डिफ़ॉल्ट मान है no), सर्वर हमेशा पोर्ट को लूपबैक इंटरफ़ेस पर बाध्य करने के लिए मजबूर करेगा।


290
2018-05-06 06:11



ओह मेरे भगवान यह काम किया !!!!! मैंने वास्तव में 1 मिलियन बार किया है !! मैं बस भूल गया * बैश में फाइलें देगी और मुझे चाहिए \* - Trevor Rudolph
हाँ, यही कारण है कि मैं हमेशा पसंद करता हूँ 0.0.0.0 - यह केवल आईपीवी 4 है, लेकिन यह ज्यादातर समय करेगा :) - Stefan Seidel
गेटवे पोर्ट्स ने मेरी समस्या हल की। - Sunry
गेटवे पोर्ट्स = हाँ (रिमोट एसएसडीडी कॉन्फ़िगरेशन पर) ने भी मेरे लिए इसे ठीक किया - Phil_1984_
"गेटवे पोर्ट्स हां" ने मेरा दिन बनाया, धन्यवाद @ स्टेफन सिडल - karser


संपादित करें:

-g स्थानीय अग्रेषित बंदरगाहों के लिए काम करता है, लेकिन आप जो चाहते हैं वह एक रिवर्स / रिमोट फॉरवर्ड पोर्ट है, जो अलग है।

आप क्या चाहते हैं इस

अनिवार्य रूप से, पर example.com, सेट GatewayPorts=clientspecified में /etc/ssh/sshd_config

--- पिछले (गलत) उत्तर ---

-जी विकल्प का प्रयोग करें। एसएसएच के मैन पेज से:

-g     Allows remote hosts to connect to local forwarded ports.

34
2018-04-28 03:34



ऐसा प्रतीत नहीं होता है ... यह शुरू होता है लेकिन मैं दूरस्थ रूप से कनेक्ट नहीं कर सकता - Trevor Rudolph
दौड़ने का प्रयास करें netstat -elnpt एक अलग टीटी से यह पता लगाने के लिए कि कौन से बंदरगाहों के पते के लिए बाध्य हैं। के बिना -g, एक बंदरगाह के लिए बाध्य होना चाहिए 127.0.0.1:PORT। साथ में -g, यह बाध्य होना चाहिए 0.0.0.0:PORT, जो इसे दूरस्थ रूप से सुलभ बनाता है। - snapshoe
pastebin.com/q6f4kJyd - Trevor Rudolph
GatewayPorts=clientspecified या GatewayPorts clientspecified - Trevor Rudolph
और क्या मैं इसे क्लाइंट या रिमोट में जोड़ता हूं? - Trevor Rudolph


पूरा होने के लिए मेरा जवाब यहां दिया गया है:

मैं उपयोग कर समाप्त हो गया ssh -R ... सुरंग के लिए, और उपयोग के लिए socat नेटवर्क यातायात को पुनर्निर्देशित करने के लिए इसके शीर्ष पर 127.0.0.1:

सुरंग 127.0.0.1 से बंधी: ssh -R mitm:9999:<my.ip>:8084 me@mitm

socat: mitm$ socat TCP-LISTEN:9090,fork TCP:127.0.0.1:9999

दूसरा विकल्प उस पर शीर्ष पर एकमात्र स्थानीय सुरंग करना है, लेकिन मुझे यह मिल गया है बहुत और धीमा

mitm$ ssh -L<mitm.ip.address>:9090:localhost:9999 localhost


10
2017-10-29 12:09



मुझे यह तथ्य पसंद है कि मुझे एसएसडीडी कॉन्फ़िगरेशन से निपटने की ज़रूरत नहीं है और मैं इसे सब कुछ बिना सूडो के कर सकता हूं। इसके अलावा मैं सीखता हूं कि समाज मौजूद है। धन्यवाद! - BrutusCat


"गेटवे बंदरगाह" विकल्प का प्रयोग करें।

ssh -g -R REMOTE_PORT:HOST:PORT ...

इसका उपयोग करने के लिए, आपको शायद "GatewayPorts yes"आपके सर्वर पर /etc/ssh/sshd_config


8
2018-04-28 13:58



असल में यह काम किया। मैं क्या करता हूं कि मैं अपने आरईएसटी सर्वर पर एक फॉरवर्डर के रूप में एक ईसी 2 इंस्टेंस का उपयोग करता हूं। इस तरह, मुझे डीएमजेड में अपना सर्वर चिपकने की जरूरत नहीं है और मुझे सार्वजनिक आईपी की आवश्यकता नहीं है। मजेदार है, मैंने बनाया पहला ईसी 2 उदाहरण, एसएसएच-आर रिमोट_पोर्ट: लोकलहोस्ट: पोर्ट xxx @ ec2xxx बस ठीक काम किया लेकिन फिर मुझे किसी कारण से बाद में एक और उदाहरण बनाना पड़ा और उस बिंदु से, मैं हमेशा प्राप्त कर रहा था: कनेक्शन मना कर दिया। मैं जो प्राप्त कर रहा था उसे देखने के लिए प्रयुक्त tcpdump और अधिक जानकारी नहीं थी। -जी प्लस गेटवे पोर्ट्स ने हां किया था। - E.T


यदि आप जीत नहीं सकते हैं या / etc / ssh / sshd_config बदल सकते हैं तो आप एक डबल फॉरवर्ड का भी उपयोग कर सकते हैं।

रिमोट मशीन पर लूपबैक डिवाइस पर अस्थायी बंदरगाह (उदाहरण के लिए 10080) पर पहले अग्रेषित करें, फिर सभी इंटरफ़ेस पर पोर्ट 10080 से 80 को रीडायरेक्ट करने के लिए स्थानीय आगे का उपयोग करें:

ssh -A -R 10080:localhost_or_machine_from:80 user@remote.tld "ssh -g -N -L 80:localhost:10080 localhost"

8
2017-08-01 22:37



यह वास्तव में अग्रेषण नियमों को बाईपास करने के लिए काम करता है! - Michael Schubert
इस समाधान से प्यार करो। जब आप मशीन पर कॉन्फ़िगरेशन को नहीं बदलना चाहते हैं तो बढ़िया कामकाज - Grezzo


अगर आप में कॉन्फ़िगरेशन रखना चाहते हैं ~/.ssh/config कमांड लाइन पैरामीटर का उपयोग करने के बजाय, आप कुछ ऐसा करने का प्रयास कर सकते हैं

Host REMOTE_HOST_NAME RemoteForward \*:8080 127.0.0.1:80

याद रखें कि आप रिमोट होस्ट की फ़ायरवॉल 8080 तक कनेक्शन की अनुमति देते हैं और यह सुनिश्चित करते हैं कि GatewayPorts आपका विकल्प /etc/ssh/sshd कॉन्फ़िगर नहीं है no


0
2017-08-26 15:50