আরএসএনসি এসএসএইচ কমান্ডের জন্য কীভাবে পাসওয়ার্ড স্বয়ংক্রিয়ভাবে পাস করবেন?


111

আমি যা করতে হবে rsyncদ্বারা sshএবং জন্য পাসওয়ার্ড ক্ষণস্থায়ী প্রয়োজন ছাড়াই স্বয়ংক্রিয়ভাবে কাজ করতে চান sshম্যানুয়ালি।

উত্তর:


44

স্ক্রিপ্টযুক্ত এসএসএস লগইনগুলির জন্য আপনার পাসফ্রেজ ছাড়াই কীফাইল ব্যবহার করা উচিত। এটি স্পষ্টতই একটি সুরক্ষা ঝুঁকি, কীফাইল নিজেই পর্যাপ্ত সুরক্ষিত কিনা সেদিকে খেয়াল রাখুন।

পাসওয়ার্ডহীন ssh অ্যাক্সেস সেট আপ করার জন্য নির্দেশাবলী


9
কমান্ডের পাঠ্যে পাসওয়ার্ড রাখার কোন সম্ভাবনা নেই?
liysd

3
সহজেই নয়, এসএসএসে এর জন্য কোনও বিকল্প নেই
ম্যাড সায়েন্টিস্ট

এটি লক্ষ করা উচিত যে এটি করা সর্বদা সম্ভব নয় (উদাহরণস্বরূপ অনেক অ্যান্ড্রয়েড এসএসএস সার্ভার বাস্তবায়ন যথেষ্ট সীমিত)।
পোনকডুডল

@ পঙ্কডুডল ওপি ক্লায়েন্ট-সাইড অনুরোধ সম্পর্কে, সার্ভার-সাইড নয়। ssh -iসর্বদা ক্লায়েন্টের পক্ষে সম্ভব হওয়া উচিত। আপনি কী বোঝাতে চাইছেন যে সার্ভারটি সমস্ত কী-ধরণের (যেমন ইসিডিএসএ) সমর্থন করে না? যদিও এটি ব্যবহারের ক্ষেত্রে কেবল একটি বড় সমস্যা হবে না ssh-keygen -t। আমি কিছু অনুপস্থিত করছি?
জোনাথন এইচ

1
যদিও এটি প্রথমে কোনও ঝামেলা হিসাবে দেখা যেতে পারে তবে এটি সঠিক উত্তর। পাসওয়ার্ডগুলি সংবেদনশীল তথ্য এবং এগুলি স্পষ্টে সংরক্ষণ করা উচিত নয় বা প্রোগ্রামগুলিতে অযত্নে ব্যবহার করা উচিত নয়। কীফাইলগুলি এটাই; শুধু পরিচয় ফাইলrsync -essh -i সম্পর্কে শিখুন , এবং
জোনাথন এইচ

94

"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

4
আমি জানি এটি সর্বোত্তম অনুশীলন নয়, তবে আমি একটি পঙ্গু এসএসএইচডি সহ একটি এনএএস পেয়েছি যা কী-ভিত্তিক লেখকটি করবে না। এই উত্তরটি ছিল আমার স্বয়ংক্রিয়-ব্যাকআপ ধাঁধাটি the সুতরাং সর্বশেষ-রিসোর্টের উত্তরের জন্য +1
মাইক গসম্যান

8
আপনি যদি একটি keyfile ব্যবহার করতে না পারেন, কিন্তু কমান্ড পাসওয়ার্ড অন্তর্ভুক্ত করা না চান, তবে আপনি এটি একটি অস্থায়ী ফাইলে লিখতে এবং এটা ভালো অন্তর্ভুক্ত করতে পারে: sshpass -p`cat .password` ssh [...]। তারপরে আপনার .passwordফাইলটি chmod 400 .passwordকেবল আপনার ব্যবহারকারীরই এটি পড়তে পারে তা নিশ্চিত করে সুরক্ষিত করুন ।
লুটোহ

5
সম্পূর্ণতার জন্য, কোনও রিমোট সার্ভারে ঝুঁকির ক্ষেত্রে, সার্ভার হওয়া src_pathউচিত: পথ, এরকম:server01.mydomain.local:/path/to/folder
হার্পারভিল

এটি অবশ্যই সঠিক উত্তর! এটি আপনাকে ssh যাদু ছাড়াই স্ক্রিপ্টিং করার অনুমতি দেয়, কেবল একটি স্ক্রিপ্টিং। ;) যশ @Rajendra
genuinefafa

1
যেহেতু -aআরএসআইএনসি-এ স্যুইচ অন্তর্ভুক্ত রয়েছে তাই -rlptgoDআপনি কমান্ডটি এইভাবে ছোট করতে পারেন:rsync -az ...
জ্যানি থিউনসিসন

24

আপনি যে পাসওয়ার্ডটি ব্যবহার করতে চান তা ব্যবহার করতে বা বিকল্পটি ব্যবহার করে rsyncএনভায়রনমেন্ট ভেরিয়েবল সেট করে আপনি কমান্ডের পাসওয়ার্ড প্রম্পট এড়াতে পারবেন ।RSYNC_PASSWORD--password-file


41
কেবলমাত্র গন্তব্য সার্ভারে যদি
রিসাইএনসি

4
যদিও এই উত্তরটি আরএসসিএন ডেমন ব্যবহার না করে সহায়তা করে না, গুগল আমাকে এখানে অবতরণ করেছে এবং এটি আমার প্রয়োজন ঠিক তাই ছিল। আমার জন্য, আমার আরএসসিএনসিডি করতে সরাসরি এসএসইএনসি দরকার, কোনও এসএসএস নেই। আমি সবে পাসওয়ার্ড-ফাইল বিকল্পটি ব্যবহার করেছি এবং স্ক্রিপ্টের জন্য পুরোপুরি কাজ করেছি।
গ্রেগ থেইগিক

14

আপনি যদি সরকারী / ব্যক্তিগত কী ব্যবহার করতে না পারেন তবে আপনি প্রত্যাশা ব্যবহার করতে পারেন:

#!/usr/bin/expect
spawn rsync SRC DEST
expect "password:"
send "PASS\n"
expect eof
if [catch wait] {
    puts "rsync failed"
    exit 1
}
exit 0

আপনার এসআরসি এবং ডিইএসটি আপনার সাধারণ আরএসসিএনসি উত্স এবং গন্তব্য পরামিতিগুলির সাথে প্রতিস্থাপন করতে হবে এবং পাসওয়ার্ডের সাথে পাস পাস হবে। এই ফাইলটি নিরাপদে সংরক্ষণ করা হয়েছে তা নিশ্চিত করুন!


3
এই কমান্ডগুলি আমারRed Hat Enterprise Linux Server release 5.11 (Tikanga)
টু ক্রা

13

আমি এটি এর মতো কাজ করতে পেরেছি:

sshpass -p "password" rsync -ae "ssh -p remote_port_ssh" /local_dir  remote_user@remote_host:/remote_dir

কি remote_port_sshসেট করা হবে? এটি একটি আসল মানের জন্য স্থানধারীর মতো দেখাচ্ছে।
ম্যাক্স উইলিয়ামস

6

একটি ssh কী ব্যবহার করুন।

তাকান ssh-keygenএবং ssh-copy-id

এর পরে আপনি rsyncএইভাবে ব্যবহার করতে পারেন :

rsync -a --stats --progress --delete /home/path server:path

আমি যদি ssh দিয়ে কী ব্যবহার করি তবে আমি লিখি: ssh u @ serv -i ./rsa তবে কীভাবে এটি RSSync এ করবেন?
liysd

2
আপনি যদি আপনার .ssh ডিরেক্টরিতে কীটি রেখে দেন এবং এটি একটি মানক নাম দেন (সাধারণত id_rsa / id_rsa.pub) তবে এটি স্বয়ংক্রিয়ভাবে আরএসসিএনএস দ্বারা নেওয়া হবে।
ক্রেগ ট্রেডার

6

আর একটি আকর্ষণীয় সম্ভাবনা:

  1. আরএসএ, বা ডিএসএ কী জুড়ি উত্পন্ন করুন (যেমনটি বর্ণিত হয়েছিল)
  2. হোস্টের জন্য সর্বজনীন কী রাখুন (এটি ইতিমধ্যে বর্ণিত হয়েছে)
  3. সঞ্চালন করুন:
rsync --partial --progress --rsh = "ssh -i dsa_private_file" হোস্ট_নেম @ হোস্ট: / হোম / আমার / ডি।

দ্রষ্টব্য: -i dsa_private_file যা আপনার আরএসএ / ডিএসএর ব্যক্তিগত কী

মূলত, এই অ্যাডপ্রোডটি @ ম্যাড সায়েন্টিস্টের বর্ণিত মতামতের সাথে খুব মিল, তবে আপনাকে আপনার ব্যক্তিগত কী ~ / .ssh এ অনুলিপি করতে হবে না। অন্য কথায়, এটি অ্যাড-হক কাজের জন্য কার্যকর (এক সময় পাসওয়ার্ডহীন অ্যাক্সেস)


5

নিম্নলিখিতটি আমার পক্ষে কাজ করে:

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


2
-a ইতিমধ্যে বোঝায় - rlptgoD এবং সাধারণভাবে, এখানে একটি কমান্ড কমান্ড লাইন পাওয়া অনেক বেশি সহায়ক হবে।
খ্রিস্টান

4

স্বয়ংক্রিয়ভাবে 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

3

যদিও আপনি ইতিমধ্যে এটি ইতিমধ্যে বাস্তবায়িত করেছেন,

আপনি যে কোনও প্রত্যাশা বাস্তবায়নও ব্যবহার করতে পারেন (পার্ল, পাইথন: পেপেক্সেক্ট, প্যারামিকো ইত্যাদির বিকল্পগুলি আপনি খুঁজে পাবেন)


2

উইন্ডোজ প্ল্যাটফর্মে এটি করার জন্য আমি একটি ভিবিএস স্ক্রিপ্ট ফাইল ব্যবহার করি, এটি আমাকে খুব ভালভাবে সার্ভার করে।

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}"

2

সরকারী সমাধান (এবং অন্যান্য) আমি প্রথমে পরিদর্শন করার সময় অসম্পূর্ণ ছিল, সুতরাং আমি এখানে ফিরে এসেছি, বছর পরে, এই সরকারী / ব্যক্তিগত কী-জুটি ব্যবহারের উদ্দেশ্যে অন্য কেউ এখানে আহত হলে এই বিকল্প পদ্ধতিটি পোস্ট করতে:

লক্ষ্য ব্যাকআপ মেশিন থেকে এটি সম্পাদন করুন, যা উত্স থেকে লক্ষ্য ব্যাকআপের দিকে টান

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 কী-জোড়া ব্যবহারের জন্য, এবং কোনও ফাইলের মাধ্যমে পাসওয়ার্ডটি পাস করার জন্য নয় ))


এবং একটি গুরুত্বপূর্ণ পার্শ্ব নোটটি হ'ল বিকল্প বন্দরের উদাহরণে, আপনি আপনার ব্যক্তিগত কী ফাইলটিতে ssh পরিচালনা করছেন, এবং এটি লক্ষ্যবস্তু কমান্ড কার্যকর করলে, এটি তার সর্বজনীন কীটির বিরুদ্ধে প্রমাণীকরণ করবে।
oemb1905

-1

অ্যান্ড্রু সিফোর্ড পোস্ট করা ধারণা অনুসরণ করে, এটি 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.