Ssh सुरंग को आगे ssh में कैसे सेटअप करें?


13

मेरे पास राउटर के पीछे उबंटू वाला कंप्यूटर है जिसे मैं कॉन्फ़िगर नहीं कर सकता। हालाँकि मैं उस कंप्यूटर का ssh एक्सेस करना चाहता हूँ। मुझे लगता है कि यह ssh टनलिंग के साथ संभव है, लेकिन मुझे नहीं पता कि यह कैसे करना है। मेरे पास एक और सर्वर है जिससे मैं टनलिंग सेटअप करना चाहूंगा। यह कैसे करना है? या हो सकता है कि आपके पास इस समस्या को हल करने का कोई और विचार हो?

मैंने कोशिश की:

ssh -N user@my_server -L 22/localhost/8090

लेकिन यह कहता है:

bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 22
Could not request local forwarding.

जवाबों:


18

आप इसे अपने स्थानीय पोर्ट 22 और आगे के कनेक्शन को रिमोट सिस्टम के पोर्ट 8090 पर सुनने के लिए कह रहे हैं। आप ऐसा नहीं कर सकते, क्योंकि आपका स्थानीय पोर्ट 22 पहले से ही आपके स्थानीय एसएसएच सर्वर द्वारा लिया गया है।

मुझे लगता है कि आप जो खोज रहे हैं वह रिमोट फॉरवर्डिंग है। के -L 22:localhost:8090साथ प्रतिस्थापित -R 8090:localhost:22करने से दूरस्थ होस्ट को पोर्ट 8090 और आपके SSH सर्वर के आगे अनुरोधों को सुनने के लिए कहा जाएगा।

यदि आप कनेक्शन चलाना छोड़ रहे हैं, तो आप बाद में किसी दूरस्थ साइट से प्राप्त कर सकते हैं, तो आप यह सुनिश्चित करना चाहते हैं कि कनेक्शन प्रासंगिक विकल्पों ( -o TCPKeepAlive=yesया -o ServerAliveInterval=30) को जोड़कर निष्क्रियता के कारण कनेक्शन को टाइम-आउट नहीं करता है

तो आप कुछ इस तरह से समाप्त करेंगे:

ssh -N user@my_server -R 8090:localhost:22 -o ServerAliveInterval=30

इसके अलावा, यदि आपके और सर्वर के बीच नेटवर्क में से कोई भी किसी भी बिंदु पर है, तो आपके द्वारा निर्दिष्ट किसी भी KeepAlive विकल्प के बावजूद कनेक्शन गिर जाएगा, इसलिए आप इस कमांड को इनटैब में जोड़ना चाहते हैं, या daemontools पैकेज या डिस्ट्रो में देख सकते हैं। समतुल्य, ताकि यह हमेशा बूट पर शुरू होता है और फिर से चालू होता है जब यह किसी अन्य कारण से बाहर निकलता है तो सिस्टम शटडाउन (या आप इसे शेल स्क्रिप्ट से चला सकते हैं जो अनंत रूप से लूप करता है, लेकिन init या daemontools क्लीनर समाधान हैं)।


यह लगभग काम करता है। मैं अपने कंप्यूटर से कनेक्ट कर सकता हूं, लेकिन मैं इसे केवल तभी कर सकता हूं जब मैं सर्वर पर लॉग इन हूं। मैं हर जगह से उस पोर्ट के माध्यम से जुड़ना चाहूंगा।
17

3
यदि आप सर्वर के सार्वजनिक पते या वाइल्ड-कार्ड को पोर्ट फॉरवर्डिंग डेफिनिशन (-R 111.222.333.444:8090:localhost:22 या -R *: 8090: localhost: 22) से जोड़ते हैं, तो वह काम कर सकता है, हालांकि उस तरह की बात सर्वर पर अक्षम किया जा सकता है। यदि सर्वर वह है जिसे आप नियंत्रित करते हैं, तो सुनिश्चित करें कि GatewayPorts विकल्प sshd_config में सक्षम है।
डेविड स्पिललेट

मैंने एक स्क्रिप्ट लिखी, जो मुझे ssh टनलिंग करने में मदद करती है, आप इसे यहाँ देख सकते हैं: github.com/gdbtek/ssh-tunneling
Nam Nguyen

GatewayPorts Yesमेरे sshd_config में जोड़ने से मुझे जनता के लिए पोर्ट खोलने में मदद मिली।
एडम एफ

8

आप ऐसा नहीं कर सकते इसका कारण यह है कि आप स्थानीय कंप्यूटर पर पोर्ट 22 को दूरस्थ सर्वर पर 8090 पर पोर्ट करने के लिए प्रयास कर रहे हैं और स्थानीय सर्वर पर पोर्ट 22 पर पहले से ही कुछ चल रहा है। अधिकतर संभावना है कि आपके पास SSH सर्वर चल रहा हो। आप 22 को एक अलग मान में बदलकर इसे ठीक कर सकते हैं। आप यह देखने के लिए जांच सकते हैं कि क्या पोर्ट चालू है:

# netstat -lep --tcp

यह सभी सुनने वाले सॉकेट को सूचीबद्ध करता है, इसलिए यदि पोर्ट सूचीबद्ध नहीं है, तो यह मुफ़्त है।


3

मैं lsof -i का उपयोग कर रहा हूं: पोर्ट नि: शुल्क है या नहीं यह जांचने के लिए पोर्टनंबर कमांड:

# lsof -i :2272

अगर पोर्ट फ्री है तो आपको आउटपुट में कुछ नहीं दिखेगा।

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