docs:scp
اختلافات
عرض الاختلافات بين النسخة المختارة و النسخة الحالية من الصفحة.
| جانبي المراجعة السابقةالمراجعة السابقة | |||
| docs:scp [2008/06/04 10:24] – dabash | docs:scp [2015/04/23 03:20] (حالي) – تحرير خارجي 127.0.0.1 | ||
|---|---|---|---|
| سطر 1: | سطر 1: | ||
| + | {{tag> | ||
| + | ~~ODT~~ | ||
| + | ====== الاستغناء عن كلمات السر مع الامر scp ====== | ||
| + | |||
| + | * تأليف ديف | ||
| + | * ترجمة زياد حسين دبش | ||
| + | * المقال الأصلي مجلة لينكس http:// | ||
| + | |||
| + | تعلم كيفية نشر ملفات بسرعة واخذ نسخ احتياطية بسهولة عند تجهيز امر النسخ للعمل دون الحاجة الى كلمات السر. | ||
| + | |||
| + | في هذه المادة ، أنا اوضح لكم كيفية استخدام الامر '' | ||
| + | |||
| + | اذا كنت مشرف على انظمة لينكس ، فأنت غالبا ما تحتاج الى نسخ ملفات لينكس من جهاز الى آخر. أو ، قد تحتاج لتوزيع الملف الى اجهزة متعددة. يمكنك استخدام بروتوكول نقل الملفات FTP، ولكن | ||
| + | |||
| + | ولكن ماافضله واحبه بخصوص scp انه قابل للتنفيذ داخل النصوص التنفيذية بسهولة (scriptable) . لنفترض انك بحاجة الى توزيع الملف الى 100 جهازيعمل بالينكس. | ||
| + | |||
| + | اليك مثالا يدل التركيب الاساسي لـ scp. | ||
| + | | ||
| + | |||
| + | < | ||
| + | |||
| + | scp abc.tgz root@bozo:/ | ||
| + | |||
| + | </ | ||
| + | |||
| + | | ||
| + | |||
| + | 1- عليك ان تحدد من من المستخدمين على الجهاز سيستخدم امر scp في وقت لاحق. وبطبيعة الحال ،المستخدم الجذر(root) | ||
| + | |||
| + | 2- انشاء المفتاح العام / | ||
| + | |||
| + | < | ||
| + | ssh-keygen -t rsa | ||
| + | </ | ||
| + | |||
| + | -3.وردا على ذلك ، يجب أن ترى التالي | ||
| + | |||
| + | < | ||
| + | .Generating public/ | ||
| + | Enter file in which to save the key ... | ||
| + | </ | ||
| + | اضغط زر الادخال لقبول هذا. | ||
| + | |||
| + | 4.وردا على ذلك ، يجب أن ترى | ||
| + | |||
| + | لست بحاجة الى كلمة مرور ، لذ قم بالضغط على مفتاح الادخال مرتين ): | ||
| + | |||
| + | 5. وردا على ذلك ، يجب أن ترى | ||
| + | |||
| + | < | ||
| + | Your identification has been saved in ... | ||
| + | Your public key has been saved in ... | ||
| + | |||
| + | </ | ||
| + | ملاحظه اسم ومكان المفتاح العمومي ولدت للتو. ودائما تنتهي بامتداد pub | ||
| + | |||
| + | 6-انسخ المفتاح العام الذي انشىء للتو الى جميع اجهزة لينكس . يمكنك استخدام بروتوكول نقل الملفات FTP او scp او اي شىء لنسخة. على افتراض انك تستخدم الجذر -- (مرة اخرى ، انظر التحذير في الخطوة 1 اعلاه )-- المفتاح العام يجب ان يكون في الملف | ||
| + | '' | ||
| + | . اما ، اذا كنت | ||
| + | '' | ||
| + | . لاحظ بأن الملف authorized_keys | ||
| + | |||
| + | الآن ، مع القليل من الحظ ، يجب ان تكون قادر علىنسخ الملفات بستخدام | ||
| + | |||
| + | < | ||
| + | scp xyz.tgz root@bozo:/ | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | نجحت -- مع انها لم تطلب كلمة السر! | ||
| + | |||
| + | اود ان انوه بكلمة عن الأمن قبل ان نكمل الموضوع. هذا الجهاز اصبح بقوة خطيرة ، لانه الان يستطيع الوصول الى جميع الحواسيب الشخصيه عن بعد | ||
| + | |||
| + | الآن الجزء الممتع. دعنا نكتب نص قصير لنسخ ملف يدعا هوديني من جهاز الى مجلد tmp/ موجود على عشرة اجهزة | ||
| + | | ||
| + | |||
| + | <code bash> | ||
| + | |||
| + | #!/bin/sh | ||
| + | for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk | ||
| + | tokyo | ||
| + | do | ||
| + | scp houdini root@$CITY:/ | ||
| + | echo $CITY " is copied" | ||
| + | done | ||
| + | |||
| + | </ | ||
| + | |||
| + | انها تعمل كالسحر. وتمشيا مع صدى في هذا النص ، يجب ان تكون قادر على مراقبة كلما انتهى من النسخ لمدينة | ||
| + | |||
| + | بالمناسبة ، اذا كنت جديدا على كتابه الشل | ||
| + | |||
| + | وكما تعلمون ، scp هو جزء واحد فقط من نطاق واسع بكثير لبرنامج ssh. واليك الجزء الرائع : عندما كنت تتبع الخطوات الستة | ||
| + | < | ||
| + | ssh brooklyn " | ||
| + | |||
| + | </ | ||
| + | |||
| + | دعنا الآن لنضع | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | |||
| + | # Variables are upper case for clarity | ||
| + | |||
| + | # before using the script you need to create a dir called '/ | ||
| + | on each | ||
| + | # remote box & a dir called '/ | ||
| + | |||
| + | |||
| + | # on this local PC | ||
| + | # Set the variable " | ||
| + | # | ||
| + | DATE=$(date +%b%d) | ||
| + | |||
| + | # this 'for loop' has 3 separate functions | ||
| + | |||
| + | for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk | ||
| + | tokyo | ||
| + | do | ||
| + | |||
| + | # remove tarball on remote box from the previous time the script ran # | ||
| + | to avoid filling up your HD | ||
| + | # then echo it for troubleshooting | ||
| + | # | ||
| + | ssh -1 $CITY "rm -f / | ||
| + | echo $CITY " old tarball removed" | ||
| + | |||
| + | # create a tarball of the /home dir on each remote box & put it in | ||
| + | / | ||
| + | # name the tarball uniquely with the date & city name | ||
| + | # | ||
| + | ssh $CITY "tar -zcvpf / | ||
| + | echo $CITY " is tarred" | ||
| + | |||
| + | # copy the tarball just create from the remote box to the / | ||
| + | dir on | ||
| + | # the local box | ||
| + | # | ||
| + | scp root@$CITY:/ | ||
| + | echo $CITY " is copied" | ||
| + | |||
| + | |||
| + | done | ||
| + | </ | ||
| + | <code bash> | ||
| + | # the rest of the script is for error checking only, so it's optional: | ||
| + | |||
| + | # on this local PC | ||
| + | # create error file w todays date. | ||
| + | # If any box doesn' | ||
| + | # | ||
| + | touch / | ||
| + | |||
| + | for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk | ||
| + | tokyo | ||
| + | |||
| + | do | ||
| + | |||
| + | # Check if tarball was copied to local box. If not write to error file | ||
| + | # note the use of ' | ||
| + | is not # true | ||
| + | # | ||
| + | ls / | ||
| + | scp_error_$DATE | ||
| + | |||
| + | |||
| + | # Check if tarball can be opened w/o errors. If errors write to error file. | ||
| + | tar ztvf / | ||
| + | Good" >> scp_error_$DATE | ||
| + | done | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | في هذه الموضوع ، حاولت اعطاء الامثله التي تبرهن على مفاهيم ليست بالضروره جاهزه للاستخدام " | ||
docs/scp.txt · آخر تعديل: بواسطة 127.0.0.1
