जवाबों:
आपको स्क्रिप्टेड ssh लॉगिन के लिए पासफ़्रेज़ के बिना कीफ़ाइल का उपयोग करना चाहिए। यह स्पष्ट रूप से एक सुरक्षा जोखिम है, इस बात का ख्याल रखें कि कीफाइल पर्याप्त रूप से सुरक्षित है।
ssh -i
ग्राहक पक्ष पर हमेशा संभव होना चाहिए। क्या आपका मतलब है कि सर्वर सभी कुंजी-प्रकारों (जैसे ईसीडीएसए) का समर्थन नहीं कर सकता है? यह एक प्रमुख मुद्दा नहीं होगा, हालांकि, केवल उपयोग करने का मामला है ssh-keygen -t
। क्या मैं कुछ भूल रहा हूँ?
rsync -e
ssh -i
बारे में जानें , और ।
"Sshpass" गैर-इंटरैक्टिव ssh पासवर्ड प्रदाता उपयोगिता का उपयोग करें
उबंटू पर
sudo apt-get install sshpass
Rsync को कमांड दें
/usr/bin/rsync -ratlz --rsh="/usr/bin/sshpass -p password ssh -o StrictHostKeyChecking=no -l username" src_path dest_path
sshpass -p`cat .password` ssh [...]
:। फिर अपनी .password
फ़ाइल को सुरक्षित करके chmod 400 .password
सुनिश्चित करें कि केवल आपका उपयोगकर्ता ही इसे पढ़ सकता है।
src_path
server01.mydomain.local:/path/to/folder
-a
rsync पर स्विच शामिल है -rlptgoD
, आप इस तरह से कमांड को छोटा कर सकते हैं:rsync -az ...
आप जिस विकल्प का उपयोग करना चाहते हैं उस पासवर्ड के लिए rsync
पर्यावरण चर सेट करके या कमांड का उपयोग करके पासवर्ड प्रॉम्प्ट से बच सकते हैं ।RSYNC_PASSWORD
--password-file
यदि आप सार्वजनिक / निजी कुंजी का उपयोग नहीं कर सकते हैं, तो आप अपेक्षा का उपयोग कर सकते हैं:
#!/usr/bin/expect
spawn rsync SRC DEST
expect "password:"
send "PASS\n"
expect eof
if [catch wait] {
puts "rsync failed"
exit 1
}
exit 0
आपको अपने सामान्य rsync स्रोत और गंतव्य मापदंडों के साथ SRC और DEST को बदलना होगा और PASS को अपने पासवर्ड से बदलना होगा। बस सुनिश्चित करें कि यह फ़ाइल सुरक्षित रूप से संग्रहीत है!
Red Hat Enterprise Linux Server release 5.11 (Tikanga)
मुझे यह इस तरह काम करने के लिए मिला:
sshpass -p "password" rsync -ae "ssh -p remote_port_ssh" /local_dir remote_user@remote_host:/remote_dir
remote_port_ssh
लिए सेट किया जाएगा? यह वास्तविक मूल्य के लिए एक प्लेसहोल्डर की तरह दिखता है।
एक ssh कुंजी का उपयोग करें।
ssh-keygen
और देखो ssh-copy-id
।
उसके बाद आप rsync
इस तरह से उपयोग कर सकते हैं :
rsync -a --stats --progress --delete /home/path server:path
एक और दिलचस्प संभावना:
rsync --partial --progress --rsh = "ssh -i dsa_pStreet_file" host_name @ host: / home / me / d।
नोट: -i dsa_pStreet_file जो आपकी RSA / DSA निजी कुंजी है
मूल रूप से, यह दृष्टिकोण @Mad साइंटिस्ट द्वारा वर्णित एक के समान है, हालांकि आपको अपने निजी ~ ~ / ssh को कॉपी करने की आवश्यकता नहीं है। दूसरे शब्दों में, यह तदर्थ कार्यों (एक समय पासवर्ड रहित पहुंच) के लिए उपयोगी है
निम्नलिखित मेरे लिए काम करता है:
SSHPASS='myPassword'
/usr/bin/rsync -a -r -p -o -g --progress --modify-window=1 --exclude /folderOne -s -u --rsh="/usr/bin/sshpass -p $SSHPASS ssh -o StrictHostKeyChecking=no -l root" source-path myDomain:dest-path >&2
मुझे स्थापित करना था sshpass
स्वचालित रूप से rsync कमांड के लिए पासवर्ड दर्ज करना मुश्किल है। समस्या से बचने का मेरा सरल उपाय है कि फोल्डर को बैकअप के लिए माउंट किया जाए। फिर माउंटेड फोल्डर का बैकअप लेने के लिए लोकल rsync कमांड का उपयोग करें।
mount -t cifs //server/source/ /mnt/source-tmp -o username=Username,password=password
rsync -a /mnt/source-tmp /media/destination/
umount /mnt/source-tmp
हालाँकि आप पहले ही इसे अब तक लागू कर चुके हैं,
आप किसी भी अपेक्षा के कार्यान्वयन का उपयोग कर सकते हैं (आपको पर्ल, पायथन: pexpect, paramiko, आदि) में विकल्प मिलेंगे।
मैं विंडोज प्लेटफॉर्म पर ऐसा करने के लिए एक वीबीएसस्क्रिप्ट फ़ाइल का उपयोग करता हूं, यह मुझे बहुत अच्छी तरह से सर्वर करता है।
set shell = CreateObject("WScript.Shell")
shell.run"rsync -a Name@192.168.1.100:/Users/Name/Projects/test ."
WScript.Sleep 100
shell.SendKeys"Your_Password"
shell.SendKeys "{ENTER}"
आधिकारिक समाधान (और अन्य) तब अपूर्ण थे जब मैं पहली बार आया था, इसलिए मैं वर्षों बाद वापस आया, इस वैकल्पिक दृष्टिकोण को पोस्ट करने के लिए यदि कोई अन्य व्यक्ति सार्वजनिक / निजी कुंजी-जोड़ी का उपयोग करने का इरादा रखता है, तो यहां
इसे लक्ष्य बैकअप मशीन से निष्पादित करें, जो स्रोत से लक्ष्य बैकअप के लिए खींचती है
rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' user@10.9.9.3:/home/user/Server/ /home/keith/Server/
स्रोत मशीन से इसे निष्पादित करें, जो स्रोत से लक्ष्य को बैकअप के लिए भेजता है
rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' /home/user/Server/ user@10.9.9.3:/home/user/Server/
और, यदि आप ssh के लिए एक वैकल्पिक पोर्ट का उपयोग नहीं कर रहे हैं, तो नीचे दिए गए अधिक सुरुचिपूर्ण उदाहरणों पर विचार करें:
इसे लक्ष्य बैकअप मशीन से निष्पादित करें, जो स्रोत से लक्ष्य को लक्षित करने के लिए खींचती है:
sudo rsync -avi --delete user@10.9.9.3:/var/www/ /media/sdb1/backups/www/
स्रोत मशीन से इसे निष्पादित करें, जो स्रोत से लक्ष्य को बैकअप के लिए भेजता है:
sudo rsync -avi --delete /media/sdb1/backups/www/ user@10.9.9.3:/var/www/
यदि आपको अभी भी पासवर्ड के लिए संकेत दिया जा रहा है, तो आपको अपने ssh कॉन्फ़िगरेशन की जांच करने /etc/ssh/sshd_config
और यह सत्यापित करने की आवश्यकता है कि स्रोत में मौजूद उपयोगकर्ता और लक्ष्य प्रत्येक के पास प्रत्येक भेजकर दूसरों की संबंधित ssh कुंजी है ssh-copy-id user@10.9.9.3
।
(फिर, यह एक वैकल्पिक दृष्टिकोण के रूप में, बिना पासवर्ड के ssh की-पेयर का उपयोग करने के लिए है, न कि किसी फ़ाइल के माध्यम से पासवर्ड पास करने के लिए।)
एंड्रयू सीफोर्ड द्वारा पोस्ट किए गए विचार के बाद, यह sshfs का उपयोग करके किया जाता है:
echo "SuperHardToGuessPass:P" | sshfs -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com:/mypath/ /mnt/source-tmp/ -o workaround=rename -o password_stdin
rsync -a /mnt/source-tmp/ /media/destination/
umount /mnt/source-tmp