मैं सार्वजनिक कुंजी प्रमाणीकरण का उपयोग किए बिना, पासवर्ड के लिए संकेत के बिना rsync कैसे कर सकता हूं?


44

मुझे निष्पादित करने की आवश्यकता है rsync, इसके बिना मुझे पासवर्ड के लिए संकेत दिया गया है।

मैंने rsyncमैनपेज में देखा है कि यह कमांड लाइन तर्क के रूप में पासवर्ड निर्दिष्ट करने की अनुमति नहीं देता है।
लेकिन मैंने देखा कि यह चर के माध्यम से पासवर्ड निर्दिष्ट करने की अनुमति देता है RSYNC_PASSWORD

इसलिए मैंने वैरिएबल एक्सपोर्ट करने की कोशिश की है, लेकिन rsyncमुझसे पासवर्ड मांगता रहता है।

export RSYNC_PASSWORD="abcdef"
rsync root@1.2.3.4:/abc /def

मैं क्या गलत कर रहा हूं?

कृपया ध्यान रखें:

दूसरे शब्दों में, मुझे RSYNC_PASSWORDकाम करने की जरूरत है ! :-)


क्या आपने दूरस्थ सर्वर पर rsync डेमॉन को सक्षम किया है?
राहुल पाटिल

जवाबों:


13

यह पासवर्ड वातावरण चर rsync प्रोटोकॉल का उपयोग करते समय उपयोग किया जाता है:

rsync rsync://username@1.2.3.4:/abc /def

इस काम के लिए, आपको rsync को एक डेमॉन के रूप में अच्छी तरह से ( --daemonविकल्प) को चलाने की आवश्यकता है , जिसका उपयोग अक्सर किया जाता है inetd.conf

इस प्रोटोकॉल का उपयोग करते समय, abcनिर्धारित लक्ष्य के अनुरूप होना चाहिए /etc/rsyncd.conf। उपयोगकर्ता नाम auth usersइस लक्ष्य के लिए एक पंक्ति में मौजूद होना चाहिए , और secrets fileविकल्प के साथ एक पासवर्ड फ़ाइल निर्दिष्ट की जानी चाहिए ।

यह यह सीक्रेट फाइल है जिसमें निम्नलिखित प्रारूप में उपयोगकर्ता के नाम और पासवर्ड के बीच मैपिंग शामिल है:

username:password

और यह पासवर्ड है जिसे आप RSYNC_PASSWORD पर्यावरण चर का उपयोग करके निर्दिष्ट कर सकते हैं।


rsync सर्वर चलाने का एक
तेज़ तरीका

65

यदि rsyncडेमॉन लक्ष्य मशीन पर नहीं चल रहा है, और आप स्थानीय मशीन पर सभी को पासवर्ड उजागर करने की परवाह नहीं करते हैं (तो कमांड लाइन में किसी को पासवर्ड का उपयोग क्यों नहीं करना चाहिए? ), आप उपयोग कर सकते हैं sshpass:

 sshpass -p "password" rsync root@1.2.3.4:/abc /def

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


2
आप कमांड पर पासवर्ड क्लियर टेक्स्ट जोड़ने का सुझाव क्यों देंगे, यह खराब लिनक्स एडमिन 101 है।
एडी

सुपर काम .. थोड़ी देर के लिए इस दृष्टिकोण के लिए खोज रहा था। धन्यवाद।
इसहाक ग्रेगसन

6
हालांकि यह स्पष्ट पाठ के रूप में पासवर्ड जोड़ने के लिए बुरा है, यह वर्तमान में इसका एकमात्र सरल तरीका है।
वेस्टन गैंगर

15
आप हमेशा कुछ ऐसा कर सकते हैं: sshpass -p $(cat passFile) ..बैश इतिहास में स्पष्ट पास को छिपाने के लिए, और इसे सुरक्षित करने के लिए पासफाइल पर chmod 400
Kresimir Pendic

3
मुझे पता है कि यह पुराना है, लेकिन नए पाठकों के लिए, कृपया पासवर्ड को उद्धृत करें - पासवर्ड में विशेष वर्ण और स्थान हो सकते हैं। -p "$RSYNC_PASSWORD"
धान लैंडौ

16

आप पासवर्ड रहित लॉगिन करने के लिए मानक ssh पहचान का उपयोग कर सकते हैं। यदि आपके पास ~/.ssh/id_rsaया जैसा है, यह डिफ़ॉल्ट रूप से नियंत्रित किया जाता है , लेकिन आप किसी अधिकृत कीपर की निजी कुंजी को अपना रास्ता हार्डकोड भी कर सकते हैं।

यह पासवर्ड को उजागर किए बिना बैचिंग / स्क्रिप्टिंग की अनुमति देता है, और निजी कुंजी कभी भी समझौता होने पर सार्वजनिक कुंजी को लक्ष्य सर्वर से हटाया जा सकता है।

rsync -e"ssh -i /path/to/privateKey" -avR $sourcedir ${ruser}@${rhost}:~/${rdir}/

आप -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/nullदूरस्थ होस्ट कुंजी सत्यापन को बाध्य नहीं करने जैसे तर्क भी जोड़ सकते हैं । सावधानी - जो मध्य हमलों में आदमी को खोलता है और सामान्य बुरा व्यवहार है!


1
यह विशेष रूप से उपयोगी है यदि आप विंडोज 10 के लिए नए बैश शेल का उपयोग कर रहे हैं। मैं सोच रहा था कि rsync पासवर्ड रहित क्यों काम नहीं कर रहा था। मैंने महसूस किया कि यह ~/.sshशेल के अंदर फ़ोल्डर का उपयोग कर रहा था (जहां rsync रहता है)। एक बार जब मैंने -e को अंदर की ओर इंगित करने के लिए इस्तेमाल किया /mnt/c/Users/MyUsername/.ssh, तो यह उम्मीद के मुताबिक काम किया। (
साभार

12

स्क्रिप्टिंग के लिए बहुत उपयोगी है --password-fileकमांड लाइन विकल्प का उपयोग करना ।

  • Rsync_pass नामक खाली फ़ाइल बनाएँ
  • इस फ़ाइल में पासवर्ड लिखें (अधिक कुछ नहीं)
  • chmod 600 rsync_pass
  • rsync $args --password-file=rsync_pass user@rsynchost::/share localdirectory

इसका उपयोग स्क्रिप्टिंग के लिए किया जा सकता है और यह अधिक सुरक्षित होने की अनुमति देता है कि सिस्टम वेरिएबल में पासवर्ड निर्यात करना।


4
रीडर पर ध्यान दें: इसके लिए सर्वर पर रनसोन डेमॉन की आवश्यकता होती है। मैं वास्तव में उम्मीद कर रहा था कि ssh कुंजी पासवर्ड रहित rsync के लिए पर्याप्त होगी।
श्रीधर सरनोबत

IMHO यह एकमात्र सही तरीका है अगर कोई ssh का उपयोग नहीं करना चाहता है।
मैक्सफ 130

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