Rsync के साथ पहचान फ़ाइल (id_rsa) निर्दिष्ट करें


196

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

अगर फ़ाइल है तो Rsync को कोई समस्या नहीं है ~/.ssh/id_rsa, लेकिन जब यह कुछ और है तो मुझे मिलेगा Permission denied (publickey)

Ssh के साथ मैं पहचान फ़ाइल के साथ निर्दिष्ट कर सकता हूं -i, लेकिन rsync के पास ऐसा कोई विकल्प नहीं है।

मैंने स्थानीय मशीन पर कुंजी को अस्थायी रूप से स्थानांतरित करने का भी प्रयास किया है ~/.ssh/id_rsa, लेकिन यह भी काम नहीं करता है।

tl; डॉ

क्या आप rsync के साथ एक पहचान फ़ाइल निर्दिष्ट कर सकते हैं?


1
ऐसा करने के लिए भी उपयोगी है sudo rsync, जो किसी कारण से किसी की अपनी ssh कुंजियों का उपयोग नहीं करता है।
जोजफ

1
@ijoseph वास्तव में, मैं rsync -aAP "sudo -u user ssh" user@server:dir local_dirक्रोन लिपियों को जो रूट के रूप में चलाती हूं, का उपयोग करते हुए करती हूं
मार्टिन पेका

जवाबों:


341

आप '-e' विकल्प के माध्यम से सटीक ssh कमांड निर्दिष्ट कर सकते हैं:

rsync -Pav -e "ssh -i $HOME/.ssh/somekey" username@hostname:/from/dir/ /to/dir/

कई ssh उपयोगकर्ता अपनी ~ / .ssh / config फाइल से अपरिचित हैं। आप कॉन्फ़िगर फ़ाइल के माध्यम से प्रति होस्ट पर डिफ़ॉल्ट सेटिंग्स निर्दिष्ट कर सकते हैं।

Host hostname
    User username
    IdentityFile ~/.ssh/somekey

लंबे समय में यह ~ / .ssh / config फ़ाइल सीखने के लिए सबसे अच्छा है।


मेरे लिए ssh_config में IdentityFile की मदद नहीं करता है। मैं समस्याओं के बिना "ssh web1" कर सकता हूं, लेकिन rsync से web1 का उपयोग करते समय: ... यह "अनुमति अस्वीकृत (publickey)" के साथ विफल हो जाता है।
ज़िट्राक्स

1
Ssh ट्रांसपोर्ट के वर्बोसेंस को बदलने की कोशिश करें: rsync -e 'ssh -vv' web1: / etc / जारी / tmp / जारी
दान गार्थवेट

1
आह। यदि आप इसे स्वचालित कर रहे हैं और पासवर्ड की आपूर्ति करने में सक्षम नहीं होंगे, तो आपको दोनों सिरों पर कॉन्फ़िगर की गई एक अतिरिक्त पासवर्डलेस ssh कुंजी की आवश्यकता होगी। यदि आप rsync को एक संवादात्मक सत्र में पासवर्ड के बिना काम करना चाहते हैं, तो आपको ssh-Agent का उपयोग करना होगा।
दान गर्थवेट

16
Duuuuuuude! ~/.ssh/configफ़ाइल - तुम मेरे लिए एक नया ब्रह्मांड खोला है!
दानियक

2
~ / .ssh / config ने मुझे दिन बचाया, बहुत बहुत धन्यवाद।
15

17

यह SSH यूजर कॉन्फिगर देखने के साथ किया जा सकता है: http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ मूल रूप से ~ / .ssh / config संपादित करें:

$ nano ~/.ssh/config
#Add Hosts below 
Host server1
HostName examplehost.com
User username
Port 22
IdentityFile /path/to/key

$ rsync -e ssh /home/user/directory user@remote.host.net:home/user/directory/

यह SSH, rsync का उपयोग करके किसी भी कार्यक्रम के लिए काम करना चाहिए,



4

जानकारी के लिए:

1) सार्वजनिक कुंजी हमेशा दूरस्थ सर्वर में लॉग इन करने वाले उपयोगकर्ता की होम डायरेक्टरी में होती है अर्थात यदि आप "बैकअप" के रूप में लॉगिन करते हैं तो यह /home/backup/.ssh/authorized_keys पर स्थित है। जब आप लॉगिन करते हैं तो उपयोगकर्ता आईडी गंतव्य पर उपयोग की जाने वाली सार्वजनिक कुंजी को परिभाषित करती है।

दो अलग-अलग तरीकों से कनेक्शन बनाते समय आप उपयोगकर्ता आईडी चुन सकते हैं:

ssh user_id@destination.server
or
ssh -l user_id  destination_server     (<-- that is lower case "L")

दूसरी ओर आपके अंत में निजी कुंजी उपयोगकर्ता के होमडायर में एक समान तरीके से है जब तक कि आप इसे दान के उत्तर में वर्णित की तरह ओवरराइड नहीं करते हैं।

2) बैकअप उद्देश्य के लिए यह प्रतिबंधित कुंजी बनाने के लिए वांछनीय हो सकता है जो "rsync" जैसे सिर्फ एक कमांड को चलाने के लिए सीमित है। "Rsnapshot" बैकअप से संबंधित इसके बारे में एक अच्छा वर्णन है जो आपको गैर-विशेषाधिकार प्राप्त उपयोगकर्ता खाते और "sudo" का उपयोग करके दूरस्थ बैकअप पूरे सर्वर की अनुमति देता है:

"rsnapshot" howto

Rsnapshot आसानी से दूरस्थ या स्थानीय सर्वर का एक गुच्छा बैकअप कर सकता है जो इसे अनुसूचित और केंद्रीकृत बैकअप सर्वर को आसान बनाता है।

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