2009-06-18 15 views
16

परिदृश्यssh सुरंग श्रृंखला

मैं server3 को SCP पहुंच पाने के लिए कोशिश कर रहा हूँ है, लेकिन server3 करने के लिए सर्वर 1. करने के लिए केवल सार्वजनिक ssh का उपयोग करने के लिए ssh हो तो मैं, server1 को ssh करने के लिए है server2 करने के लिए ssh , फिर सर्वर 3 के लिए ssh।

मेरा आशावादी अंत परिणाम यह होगा कि मैं WinSCP को स्थानीयहोस्ट में कर सकता हूं: 8022 और यह मुझे सर्वर 3 तक फ़ाइल पहुंच देगा।

मैं एसएस सुरंगों का उपयोग करने की कोशिश कर रहा हूं, लेकिन मैंने पढ़े सभी ट्यूटोरियल और प्रश्नों के माध्यम से इस परिदृश्य के लिए कोई भी काम नहीं कर रहा है।

मैं विंडोज पर पुटी का उपयोग कर रहा हूं।

कोई सुझाव वास्तव में सहायक होगा। धन्यवाद।

उत्तर

0

अच्छी तरह से वर्णित पर्ल स्क्रिप्ट समाधान here का वर्णन किया गया है। पोस्टिंग पर भी टिप्पणियां पढ़ें।

SSH Agent Forwarding पर अधिक पढ़ें (पर्ल स्क्रिप्ट पोस्ट टिप्पणियों में उल्लिखित)।

10

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

जब आप पुटी खोलते हैं, तो आप पुटी कॉन्फ़िगरेशन संवाद से मुलाकात की जाती हैं। आपको संपादित करने की आवश्यकता वाली दो श्रेणियां "सत्र" और "कनेक्शन → एसएसएच → सुरंग" हैं।

  1. पुटी की एक प्रति खोलें। इन सेटिंग्स का उपयोग करें:

    • कनेक्ट की मेजबानी के लिए

      • होस्ट नाम:
      • पोर्ट: 22
    • सुरंग एक बंदरगाह

      • स्थानीय मोड
      • स्रोत पोर्ट: 15500
      • गंतव्य: server2:22 (सुरक्षित शेल बंदरगाह)

        PuTTY Configuration window before pressing Add PuTTY Configuration window after pressing Add

    अब, हर बार जब आप अपने स्थानीय मशीन पर पोर्ट 15,500 से कनेक्ट, सर्वर 2 पर पोर्ट 22 पर आपका कनेक्शन सुरंग किया जा रहा है।

  2. पुटी की एक प्रति खोलें।इन सेटिंग्स का उपयोग करें:

    • कनेक्ट की मेजबानी के लिए
      • होस्ट नाम: localhost
      • पोर्ट: 15500
    • सुरंग एक बंदरगाह
      • स्थानीय मोड
      • स्रोत पोर्ट: 15501
      • गंतव्य: server3:22 (सुरक्षित शेल बंदरगाह)
  3. ओपन पुट्टी की एक प्रति। इन सेटिंग्स का उपयोग करें:

    • कनेक्ट की मेजबानी के लिए
      • होस्ट नाम: localhost
      • पोर्ट: 15501
    • सुरंग एक बंदरगाह
      • स्थानीय मोड
      • स्रोत पोर्ट: 15502
      • गंतव्य: server3:22 (सुरक्षित शेल बंदरगाह)
  4. उपयोग WinSCP बंदरगाह 15502 पर localhost से कनेक्ट करने के। आपका कनेक्शन सुरंग हो जाएगा जैसे कि आप सीधे server3 से कनेक्ट हो रहे हैं।

मुझे टिप्पणियों में बताएं कि यह आपके लिए काम करता है या नहीं। सौभाग्य!

+0

हाँ, मैं इस काम की पुष्टि कर सकता हूं। मैंने दो से अधिक एसएसएच एक साथ श्रृंखला नहीं बनाई लेकिन संभवतः अगर यह 2 के लिए काम करता है, तो यह शायद 3 और उससे आगे के लिए काम करता है। –

19

OpenSSH में, मैं इस स्थापना का उपयोग जब मैं सुरंगों की जरूरत से सुरंग उल्टा करने के लिए किया गया था। यह मुझे सीधे और सुरंगों को मैन्युअल रूप से प्रारंभ करने के बारे में चिंता किए बिना sftp server3 टाइप करने की अनुमति देता है।

 
# ~/.ssh/config 

# to connect to server2, tunnel through server1 
Host server2 
ProxyCommand ssh server1 nc %h %p 

# to connect to server3, tunnel through server2 
Host server3 
ProxyCommand ssh server2 nc %h %p 

अधिक पूरा होने के लिए, मैं आमतौर पर ProxyCommand रूप ssh -oCiphers=arcfour128,arcfour256,arcfour,blowfish-cbc -oControlMaster=no -oForwardX11=no -oForwardAgent=no -oPermitLocalCommand=no -oClearAllForwardings=yes server1 nc %h %p का उपयोग करें।

  • ssh कनेक्शन टनल किया जा रहा पहले से ही एन्क्रिप्टेड है, इसलिए वहाँ बाहरी परत के लिए भारी aes/3des का प्रयोग करने में कोई मतलब नहीं है, arcfour और blowfish तेज हैं।
  • शेष -o**** सेटिंग्स पैरानोआ से बाहर हैं, ताकि Host server1 स्टांजा वास्तव में विषम सेटिंग्स के साथ ssh_config में जोड़ा गया हो, तो कुछ भी तोड़ता नहीं है।

इसी तरह, आप प्रॉक्सी आदेश plink -P %proxyport -pw %pass %[email protected]%proxyhost nc %host %port उपयोग करने के लिए पुट्टी कॉन्फ़िगर करें, और उसके अनुसार प्रॉक्सी होस्टनाम/पोर्ट/उपयोगकर्ता/कनेक्शन/प्रॉक्सी कॉन्फ़िगरेशन फलक में पासवर्ड सेट कर सकते हैं। plink और शेष पुटी सूट (pscp, psftp, आदि) पुटी के ग्राफिकल कॉन्फ़िगरेशन में सहेजी गई कुछ भी लोड करें; उम्मीद है कि विनसिप भी करता है। (मैं इसका उपयोग नहीं करता, इसलिए मैं इसकी विशेषताओं से परिचित नहीं हूं।)

+0

जब मैं ऐसा करने का प्रयास करता हूं, तो मुझे "bash: nc: आदेश नहीं मिला" - क्या मैंने गलत समझा कि यह कैसे काम करता है? क्या मुझे उन स्थानों पर कमांड और बंदरगाहों को रखने की ज़रूरत है जहां आपके पास "एनसी% एच% पी" है? – Zak

4

यह विधि ओपन एसएसएच कॉन्फ़िगरेशन फ़ाइल में प्रॉक्सी कमांड का उपयोग करने के तरीके के समान है।

इस विधि के लिए एक पूर्व शर्त यह है कि पेजेंट को सभी इंटरमीडिएट (प्रॉक्सी) होस्टों द्वारा सार्वजनिक कुंजी प्रमाणीकरण के साथ उपयोग किया जाना चाहिए अन्यथा आप एक चमकती कर्सर के साथ समाप्त हो जाएंगे और कुछ और नहीं। तमाशा, PuTTYgen और सार्वजनिक कुंजी के बारे में अधिक जानने के लिए देखें:
http://the.earth.li/~sgtatham/putty/0.62/htmldoc/Chapter8.html#pubkey
http://the.earth.li/~sgtatham/putty/0.62/htmldoc/Chapter9.html#pageant

हम चार मशीनों इस आदेश
PuttyPC में सुलभ है -> server01 -> server02 -> server03

server01 के लिए हमारे पास
मुख्य विंडो: एक पोटीन के रूप में सत्र को बचाया [email protected] // बंदरगाह 22 // SSH
सहेजें के रूप में इस सत्र server01

मुख्य विंडो:

server02 के लिए हम एक पोटीन के रूप में सत्र बचाया है [email protected] // बंदरगाह 22 // SSH
प्रॉक्सी config खिड़की: प्रकार local // प्रॉक्सी आदेश plink -load server01 -nc %host:%port
सहेजें के रूप में server02

के लिए इस सत्र server03 हम एक पोटीन सत्र बचाया है के रूप में:
मुख्य खिड़की: [email protected] // बंदरगाह 22 // SSH
प्रॉक्सी config पैनल: प्रकार local // प्रॉक्सी आदेश plink -load server02 -nc %host:%port +०१२३५०९५२९९ इस सत्र को server03

इसका मतलब है कि server03 के लिए सहेजा गया सत्र सर्वर02 के लिए सहेजे गए सत्र को कॉल करेगा और server02 सहेजे गए सत्र सर्वर 01 सत्र को कॉल करेगा।

+0

बहुत अच्छा समाधान। खिड़कियों, पुटी और winscp के साथ पूरी तरह से एकीकृत करता है। अगर मैं कर सकता, तो मैं इसे दो बार ऊपर उठाऊंगा। – helt

0

यदि आपको केवल एक सर्वर को ओवरस्टेप करने की आवश्यकता है तो मुझे यह सेटअप करना आसान लगता है I WinSCP।

परिदृश्य: कंप्यूटर> server1-> server2

1: सेटअप server2

के लिए कनेक्शन

2: क्लिक करें advanced-> कनेक्शन> सुरंग

3: SSH सुरंग को सक्षम और सेट मेजबान सर्वर

संबंधित मुद्दे