सर्वर से फाइल दो कदम दूर [बंद]


14

हमारे पास निम्न स्थिति है:

  1. मेरी मशीन
  2. एक गेटवे मशीन
  3. लक्ष्य मशीन

मुझे # 2 और # 3 दोनों पर कोई मूल अधिकार नहीं है। मैं मशीन # 2 पर वास्तव में जानकारी (और नहीं तो 200 MiB) को स्टोर नहीं कर सकता (क्योंकि यह बाकी नेटवर्क में प्रवेश द्वार होने का उल्लेख है, तब और अधिक नहीं है)। मशीन # 3 पर एक फ़ोल्डर है, आकार में लगभग 3 GiB, जिसे मैं स्थानीय में कॉपी करना चाहता हूं। मैं # 1 से # 3 तक SSH नहीं कर सकता, लेकिन मैं SSH को # 2 और फिर # 3 कर सकता हूं। # 2 और # 3 के बीच सार्वजनिक निजी कीपर सेट करना भी संभव नहीं है, लेकिन # 1 और # 2 के बीच एक कीपर स्थापित है।

आम तौर पर मैं इसे प्राप्त करने के लिए SSH और टार के संयोजन का उपयोग करता हूं:

ssh name@host "tar cf - folder" > folder.tar

लेकिन इस मामले में किसी प्रकार के घोंसले के शिकार की आवश्यकता होगी, और मुझे ऐसा करने की आवश्यकता नहीं है।

तो, # 3 से # 1 तक डेटा प्राप्त करने का एक अच्छा तरीका क्या होगा?

जवाबों:


27

आप मशीन 2 के माध्यम से एक SSH सुरंग बना सकते हैं, फिर दूसरे सत्र में सुरंग से जुड़ सकते हैं।

उदाहरण के लिए, मशीन 1 पर दो सीएलआई सत्र खोलें। पहले सत्र में निम्नलिखित चलाएं:

MACHINE1$ ssh -L 2022:MACHINE3:22 <user>@MACHINE2

दूसरे सत्र में निम्नलिखित चलाएं:

MACHINE1 $ ssh -p 2022 <user>@localhost

पहले कमांड के साथ जो हो रहा है वह एक स्थानीय पोर्ट है (मशीन 1 पर 2022) को मशीन 3 पर आपके एसएसएच कनेक्शन का उपयोग करके मशीन 22 पर पोर्ट 22 पर सुरंग किया जा रहा है।

दूसरी कमांड के साथ आप नए खुले हुए लोकल पोर्ट (2022) से जुड़ रहे हैं और यह ऐसा है जैसे आप सीधे मशीन 3 से जुड़ रहे हैं।

अब यदि आप अपनी विशिष्ट फ़ाइल स्थानांतरण प्रक्रिया का उपयोग करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:

ssh -p 2022 <user>@localhost "tar cf - /path/to/remote/directory/" > filename.tar

वैकल्पिक रूप से, आप अपने आप को rsync से परिचित कर सकते हैं और इसके बजाय ऐसा कुछ कर सकते हैं:

rsync -aHSv --progress -e 'ssh -p 2022' <user>@localhost:/path/to/remote/directory/ /path/to/local/directory/

अंतिम लक्ष्य मानकर तारकोल प्राप्त नहीं करना है।


2
का उपयोग करना ProxyCommandऔर ssh -Wदोनों sshकमांड को एक कमांड लाइन में जोड़ा जा सकता है। यदि आपके पास OpenSSH क्लाइंट का बहुत हालिया संस्करण है, तो एक तर्क है जो आपको एक ही sshआदेश के साथ यह सब करने देगा ।
19

+1 rsync के लिए;)
NieDzejkob 12

मैं टार का उपयोग करता हूं क्योंकि बहुत सारी फ़ाइलों को स्थानांतरित करने में अधिक समय लगता है फिर एक बड़ी फ़ाइल को स्थानांतरित करना। क्या rsync इसका समाधान करता है?
चीरोन सेप

रिमोट ट्रांसफ़र करते समय rsync चेकसम में डेटा को ट्रांसमिट करता है (रिसीव करने पर, डिस्क पर लिखने से पहले), इसलिए फाइल ट्रांसफर करने में अधिक समय लगेगा। हालाँकि, यह समय अच्छी तरह से व्यतीत होता है।
जीन

5

आप एसएसएच के नए संस्करणों के मास्टर सत्र क्षमता का भी उपयोग कर सकते हैं। यह यहाँ वर्णित है:

https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing

संभवतः आपके लिए आवश्यक सभी अपने .ssh / config को संपादित / बनाना है। मास्टर सत्र को नियंत्रित करने वाली परिभाषाएँ जोड़ें:

ControlMaster auto
ControlPath ~/.ssh/cm_socket/%r@%h:%p
ControlPersist 4h
ServerAliveInterval 30

फिर आप अपनी पहली हॉप सर्वर परिभाषा को निर्दिष्ट कर सकते हैं जैसे:

Host first_hop
Hostname <your first host FQDN or IP>
User <your user>

और दूसरा हॉप प्रॉक्सी के रूप में आपके पहले हॉप सर्वर का उपयोग करेगा:

Host second_hop
Hostname <your second host FQDN or IP>
User <your user>
ProxyCommand ssh -W %h:%p first_hop

~ / .Ssh / cm_socket निर्देशिका बनाने के लिए मत भूलना और कॉन्फ़िगरेशन अनुमतियाँ 644 होनी चाहिए।

फिर आप अपने दूसरे सर्वर से सीधे SSH या SCP में सक्षम होना चाहिए। इस तरह से ज्‍यादा सर्वर जंजीर हो सकते हैं।


3
आपके लिंक को पढ़ने से, मुझे नहीं लगता ControlMasterकि प्रॉक्सी के लिए मल्टीप्लेक्सिंग की आवश्यकता है। उस वाइकबुक में अधिक प्रासंगिक पृष्ठ यह है: en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts
IMSoP

हाँ मैं सहमत हूँ। इसके कई तरीके हैं। हालाँकि मैं मास्टर सत्र को सबसे सुरुचिपूर्ण मानता हूँ। यह सिर्फ व्यक्तिगत प्राथमिकताओं के बारे में है ;-)
जारोस्लाव कुचेरा

हममें से एक या दूसरे ने कुछ गलत समझा था। जहां तक ​​मैं देख सकता हूं, "मास्टर कनेक्शन" नेटवर्क संसाधनों का कुशल उपयोग करने के बारे में है, और इसका सवाल से कोई लेना-देना नहीं है। यह करने का एक अलग तरीका नहीं है, यह सिर्फ हाथ में काम के लिए अप्रासंगिक है।
IMSoP 12
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.