يجب أن يكون مدراء Linux على دراية ببيئة الأوامر النصية. نظرًا لأن واجهة المستخدم الرسومية (Graphical User Interface) في خوادم Linux ليست شائعة التثبيت.
SSH قد يكون أكثر البروتوكولات شهرة لتمكين مدراء Linux من إدارة الخوادم بطريقة آمنة وبعيدة المدى. مضمنة مع SSH الأمر هناك SCP الأمر، الذي يستخدم لنسخ الملف(الملفات) بين الخوادم بطريقة آمنة.
أساسيات النحو للأمر SCP
سيُقرأ الأمر التالي على أنه نسخ “ملف المصدرsource_file_name” إلى “المجلد المستقبلdestination_folder” على “المضيف المستقبلdestination_host” باستخدام حساب “اسم المستخدمusername“.
scp source_file_name username@destination_host:destination_folder
هناك العديد من المعاملات في أمر SCP الذي يمكنك استخدامه. فيما يلي المعاملات التي قد تستخدمها في الاستخدام اليومي.
محتويات الجدول
نقل الملفات بأمان في Linux
الأمر SCP الأساسي بدون معلمات سينسخ الملفات في الخلفية. لن يرى المستخدم أي شيء إلا إذا تم إكمال العملية أو ظهرت بعض الأخطاء.
يمكنك استخدام معلمة ” -v
” لطباعة معلومات التصحيح على الشاشة. يمكن أن يساعدك في تصحيح المشاكل المتعلقة بالاتصال والتوثيق والتهيئة.
نسخ الملف من المستعرض المحلي إلى الخادم البعيد
الأمر التالي ينسخ ملف “scp-cheatsheet.pdf” من المحلي إلى نظام لينكس متجه إلى دليل /home/tecmint.
$ scp -v scp-cheatsheet.pdf [email protected]:/home/tecmint/.
نتيجة عينة:
Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -t /home/tecmint/. OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f 31 Mar 2020 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22. debug1: Connection established. debug1: identity file /home/tecmint/.ssh/id_rsa type -1 debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_dsa type -1 debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_xmss type -1 ...
نسخ ملف من المستضيف البعيد إلى المستضيف المحلي
الأمر التالي ينسخ ملف “ssh-cheatsheet.pdf” من المستضيف البعيد إلى النظام المحلي تحت /home/tecmint دليل.
$ scp -v [email protected]:/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.
نتيجة عينة:
Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -f /home/ravi/ssh-cheatsheet.pdf OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f 31 Mar 2020 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22. debug1: Connection established. debug1: identity file /home/tecmint/.ssh/id_rsa type -1 debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_dsa type -1 debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1 ...
نسخ ملف من المستضيف البعيد إلى مستضيف آخر
الأمر التالي ينسخ ملف “ssh-cheatsheet.pdf” من المستضيف البعيد إلى نظام مستضيف بعيد آخر تحت /home/tecmint دليل.
$ scp -v [email protected]:/home/ravi/ssh-cheatsheet.pdf [email protected]:/home/anusha/.
نسخ الملفات مع تاريخ ووقت الإنشاء الأصلي
معامل “-p
” سيحافظ على تواريخ التعديل والوصول الأصلية للملفات أثناء نسخ الملفات مع الوقت المقدر وسرعة الاتصال الظاهرة على الشاشة.
$ scp -p scp-cheatsheet.pdf [email protected]:/home/tecmint/.
نتيجة عينة:
[email protected]'s password: scp-cheatsheet.pdf 100% 531 721.4KB/s 00:00
ضغط Scp أثناء نسخ الملفات
أحد المعلمات التي يمكن أن تزيد من سرعة تحويل ملفاتك هو ” -C
” المعلمة ، والتي تُستخدم لـ ضغط ملفاتك على عجل. الشيء الفريد هو أن الضغط يحدث فقط في الشبكة. عندما يصل الملف إلى الخادم الوجهة ، سيعود إلى الحجم الأصلي كما كان قبل حدوث الضغط.
ألق نظرة على هذه الأوامر. يستخدم ملفًا واحدًا من 93 ميغابايت.
$ scp -pv messages.log [email protected]:.
الناتج النموذجي:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 202.x.x.x [202.x.x.x] port 22. debug1: Connection established. debug1: identity file /home/pungki/.ssh/id_rsa type -1 debug1: Found key in /home/pungki/.ssh/known_hosts:1 debug1: ssh_rsa_verify: signature correct debug1: Trying private key: /home/pungki/.ssh/id_rsa debug1: Next authentication method: password [email protected]'s password: debug1: Authentication succeeded (password). Authenticated to 202.x.x.x ([202.x.x.x]:22). debug1: Sending command: scp -v -p -t. File mtime 1323853868 atime 1380425711 Sending file timestamps: T1323853868 0 1380425711 0 messages.log 100% 93MB 58.6KB/s 27:05 Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds Bytes per second: sent 58758.4, received 15.6 debug1: Exit status 0
نسخ الملفات بدون ” -C
” المعلمة سيؤدي إلى 1661.3 ثانية. يمكنك مقارنة النتيجة بالأمر أدناه باستخدام ” -C"
المعلمة.
$ scp -Cpv messages.log [email protected]:.
الناتج النموذجي:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 202.x.x.x [202.x.x.x] port 22. debug1: Connection established. debug1: identity file /home/pungki/.ssh/id_rsa type -1 debug1: Host '202.x.x.x' is known and matches the RSA host key. debug1: Found key in /home/pungki/.ssh/known_hosts:1 debug1: ssh_rsa_verify: signature correct debug1: Next authentication method: publickey debug1: Trying private key: /home/pungki/.ssh/id_rsa debug1: Next authentication method: password [email protected]'s password: debug1: Enabling compression at level 6. debug1: Authentication succeeded (password). Authenticated to 202.x.x.x ([202.x.x.x]:22). debug1: channel 0: new [client-session] debug1: Sending command: scp -v -p -t . File mtime 1323853868 atime 1380428748 Sending file timestamps: T1323853868 0 1380428748 0 Sink: T1323853868 0 1380428748 0 Sending file modes: C0600 97517300 messages.log messages.log 100% 93MB 602.7KB/s 02:38 Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds Bytes per second: sent 54813.9, received 97.0 debug1: Exit status 0 debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09 debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48
كما ترون ، عند استخدام الضغط ، يتم إكمال عملية التحويل في 162.5 ثانية. إنه 10 أضعاف أسرع من عدم استخدام ” -C
” المعلمة. إذا كنت تنسخ العديد من الملفات عبر الشبكة ، فستساعدك المعلمة ” -C
” على تقليل الوقت الإجمالي الذي تحتاجه.
الشيء الذي يجب أن نلاحظه هو أن طريقة الضغط لن تعمل على أي ملفات. عندما يكون الملف المصدر مضغوط بالفعل ، لن تجد أي تحسين هناك. سيتم تأثير ملفات مثل .zip ، .rar ، الصور ، و .iso ملفات سيتم تأثيرها بواسطة معلمة ” -C
“.
تغيير خوارزمية SCP لتشفير الملفات
افتراضيًا، SCP يستخدم “AES-128” لتشفير الملفات. إذا كنت ترغب في تغيير خوارزمية أخرى لتشفيرها، يمكنك استخدام معامل ” -c
“.
إلقاء نظرة على هذا الأمر.
$ scp -c 3des Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13
يأمر الأمر أعلاه SCP باستخدام خوارزمية 3des لتشفير الملف. يرجى التنويه إلى أن استخدام معامل ” -c
” لا يجب أن يكون ” -C
“.
تقييد استخدام عرض النطاق الترددي باستخدام أمر SCP
قد يكون معامل آخر مفيدًا هو معامل ” -l
“. سيقيد معامل “-l” استخدام النطاق الترددي. سيكون مفيدًا إذا قمت بإعداد سير عمل تلقائي لنسخ العديد من الملفات، لكنك لا ترغب في استنزاف عرض النطاق الترددي بواسطة عملية SCP.
$ scp -l 400 Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 50.3KB/s 01:13
يعني القيمة 400 خلف معامل ” -l
” أننا نقيد عرض النطاق الترددي لعملية SCP إلى 50 كيلو بايت في الثانية.
الشيء الواحد الذي يجب تذكره هو أن عرض النطاق الترددي محدد بـ كيلو بت/ثانية (kbps). وهذا يعني أن 8 بت متساوية لـ 1 بايت.
أثناء العد من SCP في كيلوبايت/ثانية (KB/s). لذلك إذا كنت ترغب في تقييد حزمة البيانات الخاصة بك إلى أقصى حد فقط من SCP يبلغ 50 KB/s ، فأنت بحاجة إلى تعيينه إلى 50 x 8 = 400.
SCP بمنفذ مختلف
عادةً ، SCP يستخدم المنفذ 22 كمنفذ افتراضي ، ولكن لأسباب أماني ، قد ترغب في تغيير المنفذ إلى منفذ آخر. على سبيل المثال ، نستخدم المنفذ 2249.
ثم يجب أن يكون الأمر مثل هذا.
$ scp -P 2249 Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 262.3KB/s 00:14
تأكد من استخدام حرف “P” الكبير وليس “p” الصغير لأن “p” يتم استخدامه بالفعل للأوقات والأحرف المحفوظة.
SCP – نسخ الملفات والدلائل بشكل متكرر
في بعض الأحيان نحتاج إلى نسخ الدليل وجميع الملفات/الدلائل داخله. سيكون من الأفضل إذا استطعنا القيام بذلك في أمر واحد باستخدام معلمة “r” ، والتي تنسخ الدليل بأكمله بشكل متكرر.
$ scp -r documents [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13 scp.txt 100% 10KB 9.8KB/s 00:00
عندما يتم إكمال عملية النسخ ، ستجد في خادم الوجهة الدليل باسم “documents” مع جميع ملفاته. تم إنشاء المجلد “documents” تلقائيًا.
SCP – إيقاف عرض رسائل التقدم
إذا كنت تختار عدم رؤية مقياس التقدم ورسائل التحذير / التشخيص من SCP ، يمكنك تعطيله باستخدام معامل ” -q
“. هذا مثال.
$ scp -q Label.pdf [email protected]:. [email protected]'s password: pungki@mint ~/Documents $
كما ترى ، بعد إدخال كلمة المرور ، لا توجد معلومات حول عملية SCP. بعد اكتمال العملية ، سترى تلميحًا مرة أخرى.
SCP – نسخ الملفات باستخدام الوكالة
عادةً ما يتم استخدام خادم الوكالة في بيئة المكتب. بشكل أصلي ، SCP ليس مثبتًا للوكالة. عندما تستخدم بيئتك وكالة ، عليك “إخبار” SCP بالتواصل مع الوكالة.
إليك السيناريو. عنوان الوكالة هو 10.0.96.6 ومنفذ الوكالة هو 8080. تم تنفيذ التوكيد المستخدم أيضًا للوكالة. أولاً ، تحتاج إلى إنشاء ملف “~/.ssh/config”. ثانيًا ، ضع هذا الأمر بداخله.
ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth
ثم تحتاج إلى إنشاء ملف “~/.ssh/proxyauth” الذي يحتوي على.
myusername:mypassword
بعد ذلك ، يمكنك القيام بـ SCP بشكل شفاف كالمعتاد.
من فضلك لاحظ أن corkscrew قد لا يتم تثبيته بعد على نظامك. على Linux Mint ، أحتاج إلى تثبيته أولاً ، باستخدام إجراء تثبيت Linux Mint القياسي.
$ apt-get install corkscrew
لأنظمة أخرى قائمة yum، يمكن للمستخدمين تثبيت corkscrew باستخدام الأمر yum التالي.
# yum install corkscrew
الشيء الآخر هو أنه بما أن ملف “~/.ssh/proxyauth” يحتوي على ” اسم المستخدم” و “كلمة المرور” بشكل واضح، يرجى التأكد من أن الملف يمكن الوصول إليه فقط من قبلك.
اختر ملف ssh_config مختلف
بالنسبة للمستخدمين المتنقلين الذين يتبدلون بين شبكات الشركة والشبكات العامة، سيكون معاناة دائمة في تغيير الإعدادات في SCP. من الأفضل إذا كان بإمكاننا وضع ملف ssh_config مختلف لتناسب احتياجاتنا.
يتم استخدام الوكيل في شبكة الشركة ولكن ليس في الشبكة العامة وأنت تتبدل بين الشبكات بانتظام.
$ scp -F /home/pungki/proxy_ssh_config Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13
بشكل افتراضي، سيتم وضع ملف “ssh_config” لكل مستخدم في ” ~/.ssh/config“. إن إنشاء ملف “ssh_config” محدد متوافق مع الوكيل سيجعل التبديل بين الشبكات أسهل.
عندما تكون في شبكة الشركة، يمكنك استخدام المعلمة “-F
“. عندما تكون في شبكة عامة، يمكنك تخطي المعلمة “-F
“.
هذا كل ما يتعلق بـ SCP. يمكنك مشاهدة صفحات المعلومات لـ SCP للحصول على مزيد من التفاصيل. لا تتردد في ترك التعليقات والاقتراحات.