क्या rsync का उपयोग करते समय एक अलग ssh पोर्ट निर्दिष्ट करना संभव है?


366

मैं निम्नलिखित कमांड का प्रयास कर रहा हूं:

rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path

SSH पोर्ट 2222 पर चल रहा है, लेकिन rsync अभी भी पोर्ट 22 का उपयोग करने की कोशिश करता है और फिर पथ नहीं मिलने की शिकायत करता है, निश्चित रूप से इसका कोई कारण नहीं है।

मैं जानना चाहूंगा कि क्या गैर-मानक ssh पोर्ट पर दूरस्थ होस्ट के लिए rsync करना संभव है।

जवाबों:


136

एक अन्य विकल्प, जिस होस्ट में आप rsync चलाते हैं, से ssh config फाइल में पोर्ट सेट करें, अर्थात:

cat ~/.ssh/config
Host host
    Port 2222

तब ss पर rsync 2222 पोर्ट से बात करेगा:

rsync -rvz --progress --remove-sent-files ./dir user@host:/path

21
हालांकि यह सबसे स्पष्ट जवाब नहीं है, यह अभी भी एक बहुत अच्छा जवाब है। यह आपके द्वारा एक से अधिक या दो बार जुड़ने वाले किसी भी होस्ट के लिए SSH कॉन्फिगरेशन का उपयोग करने के लायक है क्योंकि यह आपको बहुत सोचने और टाइप करने से बचाएगा।
जॉन हंट

5
वास्तव में, हालांकि निष्पक्ष होने के लिए, नकारात्मक पक्ष यह है कि यह अदृश्य हो जाता है, अर्थात, थोड़ी देर बाद कोई व्यक्ति इसे ssh config फाइल में भूल सकता है और यह नहीं समझ सकता है कि यह कैसे काम करता है, या आपका कोई सहकर्मी कमांड कॉपी / पेस्ट कर सकता है और क्यों नहीं समझ सकता है यह उनके खाते में काम नहीं करता है। फिर भी, व्यक्तिगत रूप से मैं हर समय पोर्ट नंबर टाइप करना पसंद नहीं करता।
जोआओ कोस्टा

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

1
@melfect क्या तुम मजाक कर रहे हो? मैं इसे उतना भयानक नहीं कहूंगा जितना कि मैं इसे किसी ऐसे व्यक्ति के लिए सबसे बड़ी बात कहूंगा, जिसे rsyncकई बार एक अजीब बंदरगाह की आवश्यकता होती है, लेकिन हर बार बस इतना ही फैलाया जाता है जहां आप वाक्य रचना को भूल जाते हैं।
Freedom_Ben

1
हालांकि इससे आपको कनेक्ट करने में आसानी होती है, लेकिन यह हैकर्स के लिए भी आसान हो जाता है, और आपका ओटोमलॉग एक बार फिर से स्वचालित प्रयासों से स्वाहा हो जाएगा। इसलिए यह बंदरगाहों को बदलने के बिंदु से बचता है।
आगे

625

आपकी कमांड लाइन इस तरह दिखनी चाहिए:

rsync -rvz -e 'ssh -p 2222' --progress ./dir user@host:/path

यह ठीक काम करता है - मैं किसी भी नए फ़ायरवॉल नियमों की आवश्यकता के बिना हर समय इसका उपयोग करता हूं - बस ध्यान दें कि SSH कमांड स्वयं उद्धरणों में संलग्न है।


8
मुझे आश्चर्य है कि ऐसा क्यों है - यह इतनी स्पष्ट आवश्यकता है, अभी भी काफी छिपा हुआ है, क्योंकि यह प्रभावी रूप से ssh बाइनरी के लिए एक उपनाम बना रहा है। (यह
त्रुटिपूर्ण रूप से

1
बृहदान्त्र प्रतीक के साथ काम करता हैuser@host:/path
दिमित्रीमंडलोव

23
कमांड का प्रमुख भाग है -e 'ssh -p 2222' ताकि आप इसे विभिन्न rsync params
Evan Donovan

2
ध्यान दें कि यदि आपको एक ssh कुंजी को निर्दिष्ट करने की आवश्यकता है, तो आप ऐसा कर सकते हैं-जैसे 'ssh -i mykey -p 2222'
dranxo

9
क्यों --remove- भेजा-फ़ाइलें? यदि यह स्रोत डेटा के लिए खतरनाक है, तो इसका बेहतर उल्लेख करें ...
तिवारी

14

जब आपको एक विशिष्ट SSH पोर्ट के माध्यम से फाइल भेजने की आवश्यकता होती है:

rsync -azP -e "ssh -p PORT_NUMBER" source destination

उदाहरण

rsync -azP -e "ssh -p 2121" /path/to/files/source user@remoteip:/path/to/files/destination

3
और यह वास्तव में मौजूदा उत्तर को क्या जोड़ता है?
क्रिस मास

प्रारूप और उदाहरण को देखें। मैंने यहां चीजों को सरल बनाया है।
तकनीकी विशेषज्ञ

4
ठीक है आपने दो वैकल्पिक विकल्प निकाले, लेकिन संक्षेप में आपका उत्तर बिल्कुल स्वीकार किए गए के समान है ...
क्रिस मेस

2
यह अधिक सरलीकृत और स्वरूपित है। नए शिक्षार्थियों के लिए समझने में आसान। वैसे बिना किसी कारण के डाउन वोटिंग के लिए धन्यवाद
Techie

13

"rsh विकल्प" का उपयोग करें। उदाहरण के लिए:

rsync -avz --rsh='ssh -p3382' root@remote_server_name:/opt/backups

इसका उल्लेख करें: http://www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/


मेरे लिए भी काम किया! मुझे नहीं पता कि सबसे ज्यादा वोट देने वाला जवाब काम क्यों नहीं करता ...
ch271828n

मेरे लिए भी काम किया! मुझे "--rsh" कीवर्ड की जरूरत है
ताओवो ली

2

थोड़ा आक्रामक लेकिन किसी की मदद कर सकता है। यदि आपको पासवर्ड और पोर्ट पास करने की आवश्यकता है, तो मैं sshpassपैकेज का उपयोग करने का सुझाव देता हूं । कमांड लाइन कमांड इस तरह दिखेगा: sshpass -p "password" rsync -avzh -e 'ssh -p PORT312' root@192.xx.xxx.xxx:/dir_on_host/


यह काम नहीं करता है क्योंकि प्रोटोकॉल को भ्रष्ट करते हुए, डेटा स्ट्रीम के साथ कीबोर्ड-इंटरेक्टिव गड़बड़ करता है।
Evi1M4chine

2

मुझे माइक हाइक होस्टलर की साइट पर यह समाधान मिला जो मेरे लिए पूरी तरह से काम करता है।

# rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/

3
और यह वास्तव में मौजूदा उत्तर को क्या जोड़ता है?
क्रिस मास

अच्छा लगा पूरी तरह से काम करता है। धन्यवाद :)
सम्मु सुन्दर

2

सही सिंटैक्स एक कस्टम SSH कमांड (-p 2222 जोड़कर) का उपयोग करने के लिए रुकावट बताने के लिए है, जो SSH का उपयोग करके दूरस्थ तरफ एक सुरक्षित सुरंग बनाता है, फिर स्थानीयहोस्ट के माध्यम से जुड़ता है: 873

rsync -rvz --progress --remove-sent-files -e "ssh -p 2222" //ir उपयोगकर्ता @ होस्ट / पाथ।

Rsync TCP पोर्ट 873 पर डेमॉन के रूप में चलता है, जो सुरक्षित नहीं है।

रुपये आदमी से:

पुश: rsync [विकल्प ...] SRC ... [USER @] HOST: DEST

जो लोगों को यह आज़माने के लिए गुमराह करता है:

rsync -rvz --progress --remove-sent-files/dir उपयोगकर्ता @ होस्ट: 2222 / पथ

हालाँकि, यह पोर्ट 2222 पर रुपीस डेमॉन से कनेक्ट करने के लिए निर्देश दे रहा है , जो कि नहीं है।


अन्य जवाबों में पोर्ट 873 का उल्लेख नहीं किया गया
kevinf

सवाल यह था कि इसे बंदरगाह के रूप में 2222 में चलाने के लिए कैसे प्राप्त किया जाए; rsync की आवश्यकता है या नहीं, यह एक अलग कहानी है।
डैन स्टिंगार्ट

@DanSteingart मैंने उत्तर को अपडेट किया है, क्या यह अब और मदद करता है?
केविनफ़

-3

मैं अलग पोर्ट पर ssh के माध्यम से कनेक्ट करने के लिए rsync प्राप्त करने में सक्षम नहीं था, लेकिन मैं कंप्यूटर के लिए ssh कनेक्शन को पुनर्निर्देशित करने में सक्षम था जिसे मैं iptables के माध्यम से चाहता था। यह वह समाधान नहीं है जिसकी मुझे तलाश थी, बल्कि इससे मेरी समस्या हल हो गई।

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