উত্তর:
স্ক্রিপ্টযুক্ত এসএসএস লগইনগুলির জন্য আপনার পাসফ্রেজ ছাড়াই কীফাইল ব্যবহার করা উচিত। এটি স্পষ্টতই একটি সুরক্ষা ঝুঁকি, কীফাইল নিজেই পর্যাপ্ত সুরক্ষিত কিনা সেদিকে খেয়াল রাখুন।
ssh -i
সর্বদা ক্লায়েন্টের পক্ষে সম্ভব হওয়া উচিত। আপনি কী বোঝাতে চাইছেন যে সার্ভারটি সমস্ত কী-ধরণের (যেমন ইসিডিএসএ) সমর্থন করে না? যদিও এটি ব্যবহারের ক্ষেত্রে কেবল একটি বড় সমস্যা হবে না ssh-keygen -t
। আমি কিছু অনুপস্থিত করছি?
rsync -e
ssh -i
সম্পর্কে শিখুন , এবং ।
"Sshpass" অ-ইন্টারেক্টিভ ssh পাসওয়ার্ড সরবরাহকারী ইউটিলিটি ব্যবহার করুন
উবুন্টুতে
sudo apt-get install sshpass
কমান্ডটি আরএসসিএনসি
/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
আরএসআইএনসি-এ স্যুইচ অন্তর্ভুক্ত রয়েছে তাই -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
আপনার এসআরসি এবং ডিইএসটি আপনার সাধারণ আরএসসিএনসি উত্স এবং গন্তব্য পরামিতিগুলির সাথে প্রতিস্থাপন করতে হবে এবং পাসওয়ার্ডের সাথে পাস পাস হবে। এই ফাইলটি নিরাপদে সংরক্ষণ করা হয়েছে তা নিশ্চিত করুন!
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_private_file" হোস্ট_নেম @ হোস্ট: / হোম / আমার / ডি।
দ্রষ্টব্য: -i dsa_private_file যা আপনার আরএসএ / ডিএসএর ব্যক্তিগত কী
মূলত, এই অ্যাডপ্রোডটি @ ম্যাড সায়েন্টিস্টের বর্ণিত মতামতের সাথে খুব মিল, তবে আপনাকে আপনার ব্যক্তিগত কী ~ / .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 কমান্ডের জন্য পাসওয়ার্ড প্রবেশ করা কঠিন। সমস্যা এড়াতে আমার সহজ সমাধানটি হ'ল ফোল্ডারটি ব্যাক আপ করার জন্য মাউন্ট করা। তারপরে মাউন্ট করা ফোল্ডারটি ব্যাকআপ করতে স্থানীয় আরএসসিএন কমান্ড ব্যবহার করুন।
mount -t cifs //server/source/ /mnt/source-tmp -o username=Username,password=password
rsync -a /mnt/source-tmp /media/destination/
umount /mnt/source-tmp
উইন্ডোজ প্ল্যাটফর্মে এটি করার জন্য আমি একটি ভিবিএস স্ক্রিপ্ট ফাইল ব্যবহার করি, এটি আমাকে খুব ভালভাবে সার্ভার করে।
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/
আপনি যদি এখনও কোনও পাসওয়ার্ডের জন্য প্রম্পট পেতে থাকেন তবে আপনার নিজের এসএসএল কনফিগারেশনটি পরীক্ষা করে দেখতে হবে /etc/ssh/sshd_config
এবং উত্স অনুসারে ব্যবহারকারীরা একে অপরের সাথে প্রেরণ করে অন্যের স্বতন্ত্র পাবলিক এসএস কী আছে কিনা তা যাচাই করতে হবে 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