آموزش لینوکس

در این وبلاگ مطالبی در خصوص سیستم عامل لینوکس به اشتراک گذاشته می شود.

آموزش لینوکس

در این وبلاگ مطالبی در خصوص سیستم عامل لینوکس به اشتراک گذاشته می شود.

دستور scp

سه شنبه, ۱۴ خرداد ۱۳۹۸، ۱۱:۲۶ ق.ظ

 

دستور scp برگرفته از عبارت Secure Copy و ابزاری در خط فرمان سیستم عامل می باشد. از این دستور برای کپی فایل استفاده می شود. مزیت دستور scp، ایجاد امنیت بالا در فرایند کپی می باشد.

با اجرای دستور scp در خط فرمان سیستم محلی(Local)، می‌توان فایل را :

      در خود سیستم، از مکانی به مکان دیگر کپی نمود. (مانند دستور cp)

      از سیستم محلی به یک سیستم راه دور (Remote) کپی نمود.

      از سیستم راه دور به سیستم محلی کپی نمود.

      بین دو سیستم راه دور، کپی نمود.

دستور scp برای انجام فرایند کپی، از SSH (Secure Shell Connection) استفاده می کند. به همین دلیل در اجرای دستور، نیاز به کلمه عبور می باشد.

با بیان چند مثال، نحوه ی استفاده و کاربرد تعدادی از سوییچ های دستور scp را بررسی می کنیم.

مثال 1 :

کپی فایل در داخل یک سیستم :

[root@mypc ~]# scp  /tmp/password.txt  /home/masih/

شرح دستور :

با توجه به پرامپت مشخص است که کاربر root از Home Directory خود، دستور را اجرا می کند. این دستور فایلی با نام password.txt را از مسیر tmp/ به مسیر home/masih/ کپی می کند.

نکته : در استفاده از دستور scp باید دقت نمود، زیرا در صورت وجود فایل همنام در مقصد، فرایند کپی بدون هشدار انجام شده و فایل مبدأ جایگزین فایل قبلی می شود.

نکته : در اجرای دستور کپی، حداقل سطح دسترسی برای فایل مبدأ مجوز خواندن (r--) و برای مسیر مقصد نیز مجوز نوشتن و اجرا (wx-) می باشد.

 

مثال 2 :

کپی فایل از سیستم محلی به یک سیستم راه دور :

[root@mypc ~]# scp  /tmp/password.txt  root@192.168.10.50:/var

root@192.168.10.50's password:

password.txt                                  41%    357MB    11.2MB/s     00:44 ETA

شرح دستور :

با درج کلمه عبور، فرایند کپی آغاز می شود. در سطر بعد، روند کپی برای کاربر قابل مشاهده می باشد. در این سطر بترتیب از سمت چپ به راست : نام فایل، میزان فرایند انجام شده بصورت درصد، حجم انتقال یافته، سرعت انتقال و میزان زمان باقی‌مانده تا اتمام فرایند کپی نشان داده می شود. 

 

دستور بالا، فایلی با نام password.txt را از مسیر tmp/ به یک سیستم با آدرس 192.168.10.50 و مسیر var/ کپی می کند. در قسمت دوم دستور بترتیب، نام کاربر، کاراکتر @، آدرس آی پی سیستم مقصد، کاراکتر : و مسیر مقصد مشخص می‌شوند. بین اجزا قسمت دوم دستور، نباید کاراکتر فاصله قرار گیرد.

 نکته : اگر کاربری که دستور را اجرا می‌کند و کاربری که با آن به سیستم مقصد متصل می‌شود، همنام باشند، می‌توان نام کاربر را از قسمت دوم دستور حذف نمود. در نتیجه، دستور بالا را می توان بصورت زیر هم استفاده نمود :

[root@mypc ~]# scp  /tmp/password.txt  192.168.10.50:/var

 

مثال 3 :

کپی چند فایل با دستور scp :

برای این منظور می توان، نام فایل‌ها را با یک کاراکتر فاصله، در قسمت اول دستور مشخص کرد.

[root@mypc ~]# scp /etc/*.conf  password.txt masih@192.168.10.50:/home/masih

با دستور بالا، تمامی فایل‌های مسیر etc/ که پسوند conf.‌ دارند، بهمراه فایل password.txt به دایرکتوری home/masih/ در سیستم مقصد کپی می شوند.

 

مثال 4 :

کپی دایرکتوری با دستور scp :

برای کپی یک دایرکتوری بهمراه زیرمجموعه ی آن، می توان از سوییچ r استفاده نمود.

[root@mypc ~]# scp  -r  video  masih@192.168.10.50:/home/masih

با دستور بالا دایرکتوری video و تمام زیرمجموعه ی آن، به سیستم مقصد کپی می شوند.

نکته : در صورت عدم استفاده از سوییچ r برای کپی یک دایرکتوری، پیام زیر نمایش می یابد.

[root@mypc ~]# scp  video  masih@192.168.10.50:/home/masih

masih@192.168.10.50's password:

video: not a reular file

نکته : در سیستم محلی، برای آدرس دهی جهت تعیین فایل یا مسیر کپی، می‌توان از آدرس نسبی یا مطلق استفاده نمود. اما برای سیستم راه دور فقط باید از آدرس مطلق استفاده کرد.

نکته : اگر در دستور scp بعد از کاراکتر : مسیری درج نشود، فایل در Home Directory کاربر قرار می گیرد.

[root@mypc ~]# scp  /tmp/password.txt  masih@192.168.10.50:

با دستور بالا فایل password.txt در Home Directory کاربر masih قرار می گیرد.

 

مثال 5 :

کپی فایل، بهمراه تغییر نام فایل در مقصد :

برای این منظور، می‌توان نام جدید را در انتهای مسیر سیستم مقصد درج نمود.

[root@mypc ~]# scp  /tmp/password.txt  masih@192.168.10.50:/home/masih/new_password.txt

با دستور بالا، فایل password.txt در سیستم مقصد با نام new_password.txt دیده می شود.

نکته : روش بالا برای دایرکتوری ها کاربرد ندارد.

[root@mypc ~]# scp -r  /tmp/music  192.168.10.50:/root/mp3

با اجرای دستور بالا، اگر در مقصد دایرکتوری mp3 وجود نداشته باشد، این دایرکتوری ایجاد شده و دایرکتوری music در آن قرار می گیرد.

 

مثال ۶ :

اجرای دستور scp با استفاده از پورتی خاص :

همانطور که در ابتدا اشاره شد، دستور scp از پروتکل SSH برای ایجاد ارتباط امن، بین دو سیستم استفاده می کند. در حالت پیش‌فرض، SSH بر روی پورت 22 تنظیم شده است. کاربران می‌توانند با تغییر فایل پیکربندی SSH ، نسبت به تغییر این پورت اقدام نمایند. (فایل پیکربندی =  etc/ssh/sshd_config/ )

برای کپی یک فایل با استفاده از پورت 2120، می توان از سوییچ P استفاده نمود.

[root@mypc ~]# scp  -P 2120 /tmp/password.txt   masih@192.168.10.50:/home/masih

نکته : در صورت عدم تعیین پورت در استفاده از دستور scp، برای ایجاد ارتباط با سروری که پورت پیش‌فرض آن تغییر یافته است، پیام زیر نمایش می یابد.

[root@mypc ~]# scp  /tmp/password.txt   masih@192.168.10.50:/home/masih

ssh: connect to host 192.168.10.50 port 22: Connection timed out

lost connection

 

مثال ۷ :

عدم نمایش روند اجرای دستور scp :

[root@mypc ~]# scp  -q /tmp/password.txt   masih@192.168.10.50:/home/masih

masih@192.168.10.50's password:

[root@mypc ~]#  

در دستور بالا، جزییات اجرای فرایند کپی نمایش داده نمی‌شود و بعد از اتمام عملیات کپی، خط فرمان در اختیار کاربر قرار می گیرد. البته استفاده از سوییچ q، تأثیری در نمایش پیام‌های مربوط به بروز خطا ندارد.

 

مثال 8 :

نمایش جزییات بیشتر، از فرایند اجرای دستور scp :

برای این منظور، می توان از سوییچ v استفاده نمود.

[root@mypc ~]# scp  -v /tmp/password.txt   masih@192.168.10.50:/home/masih

Executing: program /usr/bin/ssh host 192.168.10.50, user masih, command scp -v -t /root

OpenSSH_7.5p1, OpenSSL 1.1.0f-fips  25 May 2017

debug1: Reading configuration data /etc/ssh/ssh_config

debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf

debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config

debug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *

debug1: /etc/ssh/ssh_config line 57: Deprecated option "useroaming"

debug1: Connecting to 192.168.10.50 [192.168.10.50] port 22.

debug1: Connection established.

debug1: Authenticating to 192.168.10.50:22 as 'masih'

debug1: Server host key: ecdsa-sha2-nistp256 SHA256:GS8TI5ytg9BKrzJL7feMogZujG80rrsIHrebGcunaUo

debug1: Host '[192.168.10.50]:22' is known and matches the ECDSA host key.

debug1: Next authentication method: password

masih@192.168.10.50's password:

debug1: Authentication succeeded (password).

Authenticated to 192.168.10.50 ([192.168.10.50]:22).

debug1: channel 0: new [client-session]

debug1: Requesting no-more-sessions@openssh.com

debug1: Entering interactive session.

password.txt                                                   100%  854MB  11.1MB/s   01:17   

debug1: client_input_channel_req: channel 0 rtype exit-status reply 0

debug1: fd 0 clearing O_NONBLOCK

Transferred: sent 896293160, received 139064 bytes, in 77.4 seconds

Bytes per second: sent 11580266.0, received 1796.7

debug1: Exit status 0

 

مثال 9 :

کپی فایل به همراه خصوصیاتش :

با استفاده از سوییچ p در دستور scp علاوه بر کپی خود فایل، خصوصیات فایل اعم از سطح دسترسی فایل، زمان Access Time و Modification Time نیز به سیستم مقصد منتقل می شوند.

[root@mypc ~]# scp -p masih@192.168.10.50:/home/masih/linux.doc   /home/masih

 

مثال 10 :

کپی فایل از سیستم راه دور به سیستم محلی (با اجرای دستور در سیستم محلی) :

[root@mypc ~]# scp -P 2020 masih@192.168.10.50:/home/masih/linux.doc   /home/masih

masih@192.168.10.50's password:

 

دستور بالا از طریق پورت 2020 به سیستم 192.168.10.50 دسترسی پیدا کرده و فایل linux.doc را در سیستم محلی کپی می کند.

 

مثال 11 :

کپی فایل بین دو سیستم راه دور (با اجرای دستور در سیستم محلی) :

* حالت اول : پورت پیش‌فرض هر دو سیستم باز باشد. (پورت 22)

[root@mypc ~]# scp masih@192.168.10.50:/home/masih/linux.doc   ahmad@192.168.10.60/home/ahmad

masih@192.168.10.50's password:

ahmad@192.168.10.60's password:

linux.doc                                  100%  304MB  57.0MB/s   00:10   

Connection to 192.168.10.50 closed.

با اجرای دستور، ابتدا کلمه عبور سیستم مبدا و سپس سیستم مقصد درخواست می شود و در صورت درستی آنها، فرایند کپی انجام می شود.

 

* حالت دوم : در سیستم مبدأ، پورت 22 بسته و پورت 2001 باز باشد. و پورت 22 بر روی سیستم مقصد باز باشد.

[root@mypc ~]# scp -P 2001 masih@192.168.10.50:/home/masih/linux.doc   ahmad@192.168.10.60/home/ahmad

masih@192.168.10.50's password:

ahmad@192.168.10.60's password:

linux.doc                                  100%  304MB  57.0MB/s   00:10   

Connection to 192.168.10.50 closed.

نکته : برای حالتی که پورت 22 در سیستم مقصد بسته باشد، راه حل بهینه ای یافت نشد. شاید ساده‌ترین روش، کپی فایل به سیستم محلی و سپس به سیستم مقصد باشد.

۹۸/۰۳/۱۴
عیسی اسداله پور

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی