दो अलग-अलग बंदरगाहों के साथ एससीपी


15

मैं अपने स्थानीय पीसी से दो दूरस्थ सर्वर के बीच फ़ाइलों की प्रतिलिपि बनाने के लिए scp कमांड का उपयोग कैसे कर सकता हूं?

दूरस्थ सर्वर 1: आईपी = 67.12.21.133 और पोर्ट = 6774

दूरस्थ सर्वर 2: आईपी = 67.129.242.40 और पोर्ट = 6774

scp -rp-6774 denny@67.12.21.133: /home/denny/testapp1.txt denny@67.129.242.40:

यह 67.12.21.133 का पासवर्ड देने के बाद एक त्रुटि देता है,

ssh: होस्ट 67.129.242.40 पोर्ट 22 से कनेक्ट करें: कनेक्शन ने इनकार कर दिया

खोया तार


मैंने अभी भी परीक्षण किया है, लेकिन केवल पहले मेजबान के लिए काम करता है। दूसरा पोर्ट 22 पर बंद है।
गजादीपति

जवाबों:


19

आप ~/.ssh/configमेजबान के लिए उपयोग करने के लिए बंदरगाहों को निर्दिष्ट करने के लिए उपयोग कर सकते हैं (और कई अन्य अच्छी चीजें सेट करने के लिए; मैन पेज की जांच करें man ssh_config):

# ~/.ssh/config

Host 67.12.21.133
  Port 6774

Host 67.129.242.40
  Port 6774

ऐसा करते समय, आपको -3scp के विकल्प का उपयोग करना होगा , जो आपके स्थानीय मशीन के माध्यम से फाइलों को कॉपी करता है। अन्यथा, scp कमांड को पहले होस्ट पर ssh के माध्यम से जारी करता है, इसलिए यह वास्तव में चलता है

 ssh -p 6774 denny@67.12.21.133 scp -rp /home/denny/testapp1.txt denny@67.129.242.40:

और फिर पहले रिमोट होस्ट (67.12.21.133) का ~ / .ssh / config आपके स्थानीय के बजाय प्रयोग किया जाता है।

जब आपका सेटअप ~/.ssh/configसही ढंग से हो, तो यह काम करना चाहिए:

scp -rp3 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:

बेशक, आप अपने पहले दूरस्थ होस्ट पर ~ / .ssh / config फ़ाइल की सामग्री की प्रतिलिपि भी बना सकते हैं, और फिर आप -3विकल्प के बिना scp का उपयोग कर सकते हैं , जो संभवतः हस्तांतरण को गति देगा।

या आप उस कमांड का उपयोग कर सकते हैं जो एससीपी का उपयोग करता है और ऐसी कमांड लाइन का उपयोग करता है:

ssh -p 6774 denny@67.12.21.133 scp -rp -P 6774 /home/denny/testapp1.txt denny@67.129.242.40:

(Ssh और scp के लिए पोर्ट पैरामीटर के विभिन्न मामले पर ध्यान दें: ssh -p 6774बनाम scp -P 6774)

PS: मुझे यह जानकारी OpenSSH बगज़िला से मिली जहाँ मैंने इसे बग के रूप में दर्ज किया: https://bugzilla.mindrot.org/show_bug.cgi?id=2020


'-3' एक वैध विकल्प प्रतीत नहीं होता है - मुझे सिर्फ "scp: अवैध विकल्प - 3" मिलता है।
रिच सेडमैन

8

मुझे कोई आसान उपाय नहीं मिला लेकिन आप निम्नलिखित तरीके से sshfs का उपयोग करने का प्रयास कर सकते हैं:

mkdir /tmp/h1
mkdir /tmp/h2

sshfs -p 6774 user1@host1:/public /tmp/h1
sshfs -p 2211 user2@host2:/data/src /tmp/h2

cp /tmp/h1/files.* /tmp/h2

fusermount -u /tmp/h1
fusermount -u /tmp/h2

एक और तरीका ssh का उपयोग किया जा सकता है (वास्तव में सफल परीक्षण नहीं):

ssh user1@host1 "cat /public/file.bin" | ssh user2@host2 "cat >/data/file.bin"

वर्तमान में मुझे दो पासवर्ड दर्ज करने का सही तरीका नहीं मिला है। यह दो पासवर्डों के लिए कुछ बार पूछता है, लेकिन किसी को भी स्वीकार नहीं करता है। हो सकता है कि यदि आप मेजबानों के बीच ssh कुंजी का आदान-प्रदान करें तो यह काम करता है। क्योंकि आपको पासवर्ड की आवश्यकता नहीं है।

आशा है कि ये आपकी मदद करेगा? थॉमस


6

लिनक्स अकादमी ब्लॉग पर इस पृष्ठ के अनुसार , आपको बस -P 6774दूसरे दूरस्थ पथ से ठीक पहले विकल्प का उपयोग करने की आवश्यकता है :

scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt -P 6774 denny@67.129.242.40:

-Pध्वज का प्रत्येक उपयोग केवल कमांड लाइन पर अगले स्थान पर लागू होता है, संपूर्ण कमांड पर नहीं। कोई भी स्थान जिसके -Pबीच यह नहीं है और पिछला पथ (या कमांड नाम [ scp]) मानक पोर्ट (22) में चूक करता है।


यह मेरे लिए काम नहीं करता है। यह एक दया है, क्योंकि यह सबसे अच्छा समाधान लगता है। लिंक टूट गया है।
david.perez

1
बस लिंक को अपडेट किया (हालांकि मैं पहले लॉग इन करना भूल गया ...)। लिनक्स अकादमी ने अपनी साइट के पुनर्गठन का फैसला किया। आशा है कि मदद करता है, कुछ!
दान हंसेकर

अगर केवल यह काम किया। लेकिन मुझे मिलता है -P: No such file or directory
टॉम

@ टॉम - आप इसे किस सिस्टम पर चला रहे हैं? आपके पास scpयहां संदर्भित एक से अधिक कार्यान्वयन हो सकता है ।
दान हुनसेकर

यह उबंटू 17.04 है।
टॉम

-2

यदि आपको एक सर्वर से दूसरे में डेटा स्थानांतरित करने की आवश्यकता है, तो एससीपी कमांड का उपयोग करें। ऐसा करने के लिए

बस प्रेस Ctrl+ Alt+ Tखुला टर्मिनल के लिए अपने कीबोर्ड पर। जब यह खुलता है, तो नीचे कमांड चलाएँ।

scp -pr root@192.168.1.2:/path/to/files /destination/path

नोट: यदि आप पोर्ट नंबर का उल्लेख करना चाहते हैं, तो पैरामीटर -P का उपयोग किया जा सकता है।


2
आपने प्रश्न नहीं पढ़ा है। उसे बंदरगाहों से समस्या है। आप पहला पोर्ट सेट कर सकते हैं, लेकिन दूसरे को अखरोट के साथ-पैरामीटर
गजादीपजि

@gajdipajti मैंने अपने उत्तर में पोर्ट निर्दिष्ट नहीं किया, और इसे नोट के रूप में जोड़ा। उपयोगकर्ता ने यह भी कहा कि वह उसी बंदरगाह का उपयोग कर रहा है। प्र 2 और 3 लाइनों :) को देखो
मिच

2
लेकिन यह उस तरह से काम नहीं करता है, आप पहले -२ सेट करेंगे, लेकिन दूसरा 22 पर रहेगा। बस इसे आज़माएँ। मैं इस समय परीक्षण कर रहा हूं, लेकिन अभी भी कोई समाधान नहीं है।
गजदीपति

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