दो सर्वरों के बीच एक ही नेटवर्क में नहीं


13

दो सर्वर हैं जिन्हें मैं 2 अलग-अलग वीपीएन कनेक्शन के साथ एक्सेस कर सकता हूं। मैं अपने मशीन पर एक ही समय में (रूटिंग नियमों का एक सा) दोनों वीपीएन काम करने में कामयाब रहा हूं।

मैं scp <remote1>:some/file <remote2>:destination/folderअपने लैपटॉप टर्मिनल से करना चाहता हूं। लेकिन जब मैं यह कोशिश करता हूं, तो जो scpकमांड रिमोट 1 पर लगाई जाती है, वह रिमोट 2 नहीं पा सकती क्योंकि वे एक ही नेटवर्क में नहीं हैं। क्या scpमेरे लैपटॉप को राउटर के रूप में पारित करने के लिए कमांड को मजबूर करना संभव है ?

यदि मैं Nautilus (सर्वर से कनेक्ट, दोनों सर्वर, फिर कॉपी-पेस्ट) के साथ काम करता हूं, तो यह काम करता है, लेकिन मैं इसे टर्मिनल से करना चाहूंगा।


यह आपकी मशीन है जो रिमोट 1 और रिमोट 2 दोनों से संपर्क करती है । क्या आपको यकीन है कि त्रुटि है remote1 नहीं पहुंचा जा सकता है remote2 ?
Jan

हां, त्रुटि ssh है: होस्टनाम को हल नहीं कर सका <रिमोट 2>: नाम या सेवा का पता नहीं है खो कनेक्शन
Danduk82

और अगर मैं सीधे <रिमोट 2> के लिए आईपी पते का उपयोग करने की कोशिश करता हूं, तो कनेक्शन थोड़ी देर (हैंगआउट) के बाद विफल हो जाता है।
दंडुक .२

तब मुझे लगता है कि यह आपकी मशीन है जो रिमोट 2 से कनेक्ट नहीं हो सकती है । शायद वीपीएन कनेक्शन बार बाहर है या परतदार है ...
Jan

नहीं यह काम करता है, यहां तक ​​कि DNS भी काम कर रहा है। मुझे वास्तव में लग रहा है कि scp कमांड रिमोट 1 और रिमोट 2 के बीच के कनेक्शन को सीधे रिमोट 1 पर निष्पादित करने की कोशिश करती है
दांडुक D२

जवाबों:


34

Scp के नए संस्करणों में विकल्प -3 है

-3

Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote hosts

महान! बिल्कुल वही जो मुझे चाहिए था। बहुत बहुत धन्यवाद
Danduk82

1
महान खोज, मुझे नहीं पता था कि!
Jan

9

यदि आपको अधिक लचीलेपन की आवश्यकता है scp -3, तो सादे sshऔर पाइप मज़ेदार हैं।

यह स्थानीय मशीन पर धारा पुनर्निर्देशित करने के बराबर है:

ssh sourceRemote 'cat /path/to/sourceFile' \
| ssh destinationRemote 'cat > /path/to/destinationFile'

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


2
यदि स्रोत मशीन pvस्थापित है और आप catइसके साथ पहली जगह लेते हैं तो आपको एक अच्छी प्रगति पट्टी मिलेगी ।
लोरी सेप 22'14

6

@ Anko के उत्तर पर विस्तार करते हुए, आप tarकई फ़ाइलों के लिए उपयोग कर सकते हैं :

ssh -q user@sourcehost 'cd /source/path; tar -czf - files...' | \
ssh -q user@desthost 'cd /dest/path; tar -xzf -'

संपीड़ित करना पूरी तरह से वैकल्पिक है - आपका डेटा ओवरहेड को वार करने के लिए बहुत संकुचित या बड़ा नहीं हो सकता है। के अपने संस्करण तो tarसमर्थन नहीं करता है -zके माध्यम से स्विच, पाइप gzip -cऔर gzip -dcक्रमशः।

पुनश्च: tarकि सावधान संस्करणों निष्कर्षण पर अग्रणी स्लैश पट्टी नहीं है (यानी, अगर आपूर्ति की पूर्ण पथनाम के लिए लिखें)।

संपादित करें: -e noneपाइप के साथ की आवश्यकता नहीं है, क्योंकि एक छद्म टर्मिनल आवंटित नहीं किया गया है।


1
ssh-Cस्ट्रीम कंप्रेशन को सक्षम करने के लिए एक ध्वज है। इन- manपेज के अनुसार , यह gzipवैसे ही एल्गोरिथ्म का उपयोग करता है । मैनुअल पेज भी इसे इस्तेमाल करने के दौरान मदद करता है: "मॉडेम लाइनों और अन्य धीमे कनेक्शन पर संपीड़न वांछनीय है, लेकिन केवल फास्ट नेटवर्क पर चीजों को धीमा कर देगा।"
एको

4
@Anko, -Cयहाँ उपयोग करने के साथ समस्या यह है कि स्थानीय मशीन को डेटा को फिर से खोलना और पुनः प्राप्त करना होगा। tarसंपीड़न करने के लिए कहने का अर्थ है कि संपीड़ित डेटा बिना किसी प्रसंस्करण के सीधे पाइप के माध्यम से पारित हो जाता है।
cjm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.