آشنایی با دستورات SCP در لینوکس

پروتکل کپی امن یا Secure Copy Protocol (SCP) یک پروتکل شبکه انتقال فایل قدرتمند است که فایل‌ها را بین ماشین‌های مختلف در یک شبکه انتقال می‌دهد. در این مطلب، با این پروتکل بیشتر آشنا می‌شویم و پتانسیل‌های استفاده از SCP ریموت به ماشین‌های لوکال را بررسی می‌کنیم.


SCP چگونه کار می‌کند؟

SCP از SSH (Secure Shell) برای انتقال فایل‌های شما استفاده می‌کند. اما این اصلا به چه معناست؟ SSH یک پروتکل شبکه برای دسترسی ایمن از راه دور به سرورها است. مجهز به روش‌هایی برای احراز هویت، رمزگذاری و تایید صحت فایل‌های داده ارسال شده است. SCP به این ویژگی‌های امنیتی و روش‌های رمزگذاری ارائه شده توسط SSH برای انتقال امن فایل‌ها از طریق شبکه متکی است. به این ترتیب، می‌توانید از SCP از راه دور به سرورهای لوکال برای اتصال ایمن و انتقال فایل استفاده کنید و از صحت و محرمانه بودن داده‌های خود مطمئن شوید.


استفاده از SCP برای انتقال فایل

استفاده از SCP ریموت به لوکال و SCP لوکال به ریموت یک راه کارآمد و انعطاف پذیر برای انتقال فایل‌ها است. SCP مزایای عمده‌ای برای انتقال فایل ارائه می‌دهد. به عنوان مثال، SCP نسبت به سایر روش‌های انتقال فایل مانند FTP اقدامات امنیتی قوی تری ارائه می‌دهد. جنبه دیگری که در آن SCP از سایر پروتکل‌ها متفاوت است سرعت است. SCP معمولا بسیار سریعتر از پروتکل‌های دیگر مانند SFTP و یک ابزار عالی برای انتقال فایل بین ماشین‌های لینوکس است.

شما می توانید فایل ها را با SCP تغییر مکان دهید:

  • از ماشین لوکال گرفته تا ماشین ریموت
  • از یک ماشین ریموت تا یک ماشین لوکال
  • از یک ماشین ریموت به یک ماشین ریموت دیگر

اولین کاری که باید انجام دهید این است که SSH را در هر دو کامپیوتر خود تنظیم کنید. با این حال، توجه به این نکته مهم است که SSH معمولا بر روی تمام ماشین‌های لینوکس نصب می‌شود. پس اگر ماشین لینوکس دارید، این مرحله را نادیده بگیرید.

 

  1. راه اندازی SSH

برای نصب SSH دستور زیر را اجرا کنید:


sudo apt install openssh-client

  1. تولید کلیدهای SSH

دستگاه کلاینت باید یک اتصال SSH ایجاد کند. یک ارتباط امن بین ماشین‌های سرویس کلاینت و سرور برای ایجاد نیاز به یک کلید خصوصی و یک کلید عمومی دارد. این دستور یک جفت کلید SSH را برای شما ایجاد می کند:


ssh-keygen


هنگام اجرای این دستور، احتمالا از شما خواسته می‌شود که یک نام برای جفت کلید و یک رمز عبور ارائه دهید (این اختیاری است). سپس وقتی جفت کلید ایجاد شد، باید کلید عمومی را در ماشین سرور کپی کنید.
حال، بیایید نگاهی به شکل کلی دستور SCP بیندازیم:


scp [options] [source username@IP]:/[directory/file name] [destination username@IP]:/[directory]

  • [options] > این براکت اول را می‌توان با گزینه‌های مختلف دستور SCP جایگزین کرد که بعدا به آنها خواهیم رسید.
  • [source username@IP] > این براکت باید با نام کاربری و آدرس IP ماشین لوکال جایگزین شود. به عنوان مثال: root@1.1.1.1
  • [directory/file name] > این براکت باید با محل فایلی که می خواهید ارسال کنید جایگزین شود.
  • [destination username@IP] > این براکت باید با نام کاربری و آدرس IP دستگاه گیرنده جایگزین شود.
  • [directory] > این بخش را با مکان دلخواه فایل خود در دستگاه راه دور جایگزین کنید.

بنابراین، اکنون می دانید که دستور عمومی به چه شکل است. بیایید به تمام گزینه های مفید دستور SCP نگاه کنیم:

انتقال فایل‌ها با SCP

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

انتقال فایل در لینوکس به وسیله SCP

SCP از Local به Remote


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


scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]

برای استفاده از دستور scp با رمز عبور باید رمز عبور سرور راه دور خود را وارد کنید. و سپس کار شما تمام شد.


SCP از راه دور به محلی

برای معکوس کردن این فرآیند، نیازی به دسترسی به ترمینال سرور راه دور خود ندارید. در ترمینال کامپیوتر لوکال خود، این دستور را تایپ کنید:


scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]


همانطور که می بینید، ما دو قسمت این دستور را برعکس کرده‌ایم.


SCP بین دو ماشین راه دور

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


scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

سایر دستورات رایج SCP

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

 

  1. کپی کردن یک دایرکتوری کامل به صورت بازگشتی

تصور کنید می خواهید یک دایرکتوری کامل را با تمام فایل‌های موجود در آن انتقال دهید. انتقال یک به یک آن فایل‌ها واقعا زمان‌بر خواهد بود. در عوض، می‌توانید از دستور scp multiple files برای کپی کردن یک دایرکتوری به صورت بازگشتی استفاده کنید:


scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]

این می تواند برای بسیاری از سناریوها مفید باشد:

  • استقرار کد: هنگامی که در حال استقرار کد یا برنامه های کاربردی وب هستید، ممکن است لازم باشد یک دایرکتوری کامل را با تمام اجزای آن مانند فایل‌ها و اسکریپت‌ها منتقل کنید.
  • بکاپ‌گیری و سینک: اگر می خواهید یک نسخه بکاپ از کل دایرکتوری داشته باشید یا اگر می خواهید دو دایرکتوری را در ماشین لوکال و سرور ریموت را سینک (همگام سازی) کنید، باید همه چیز را به صورت بازگشتی کپی کنید.
  • انتقال سیستم: یک وظیفه مهم در انتقال سیستم، کپی و انتقال هر بخش از اطلاعات حیاتی است. استفاده از دستور SCP با گزینه -r مطمئن می شود که هیچ چیزی را در روند جابجایی خود از دست نمی دهید.
  1. محدود کردن استفاده از پهنای باند

اگر می خواهید سرعت انتقال داده‌های خود را کنترل کنید، می توانید از دستور زیر استفاده کنید:


scp -l [path/to/the/file] [Username]@[IP address]:[path/to/the/location]

چرا این کار را انجام می دهید؟
در این دو سناریو، می توانید از syntax scp Linux برای تعیین محدودیت در پهنای باند استفاده کنید:

  • ازدحام شبکه (Network Congestion): اگر شبکه شما به شدت شلوغ است، محدود کردن پهنای باند با scp می‌تواند به توزیع منابع شبکه کمک کند. محدود کردن پهنای باند با SCP تضمین می‌کند که سایر وظایف مرتبط با شبکه بدون هیچ مشکلی اجرا شوند. این در هنگام انتقال فایل‌ها از طریق یک شبکه مشترک نیز مهم است و فرآیند شما می‌تواند مانع از فعالیت‌های شبکه سایر کاربران شود.
  • انتقال پس‌زمینه (Background Transfers): در حین انتقال SCP پس‌زمینه مانند بکاپ‌گیری خودکار یا فرآیندهای همگام‌سازی، این احتمال وجود دارد که این وظایف منابع شبکه شما را از بین ببرند. در این صورت می‌توانید پهنای باند این فرآیندهای انتقال را برای مدیریت بهتر منابع محدود کنید.
  1. دریافت لاگ تفصیلی

استفاده از گزینه -v با SCP به شما گزارش دقیقی از اطلاعات اضافی در مورد فرآیند انتقال می‌دهد. برای دریافت بازخورد و اطلاعات دقیق می‌توانید از دستور زیر استفاده کنید:


scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]

به همین دلیل است که باید این دستور را به خاطر بسپارید و از آن استفاده کنید:

عیب یابی (Troubleshooting): استفاده از این گزینه پیشرفت انتقال را در عمل به شما نشان می‌دهد. می‌توانید اطلاعاتی مانند اندازه فایل و درصد تکمیل را ببینید. همچنین به شما پیام‌های خطا و هشدار می‌دهد. ترکیب این داده‌ها به شما این امکان را می‌دهد که فرآیند انتقال را در صورت نیاز مانیتور و عیب یابی کنید.

 

  1. تعیین یک پورت SSH

استفاده از scp با گزینه -p  به شما امکان می‌دهد پورت SSH را تغییر دهید. در اینجا دستوری وجود دارد که به شما امکان می دهد این کار را انجام دهید:


scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]

 

  • پیکربندی فایروال: اگر پورت SSH پیش فرض محدود شده است یا اگر می خواهید سرویس SSH را از تهدیدات احتمالی پنهان کنید، می توانید پورت SSH را تغییر دهید.
سرور مجازی یک ماشین مجازی کامل است که امکان دسترسی SSH طبق آموزش را به آن خواهید داشت.
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.

آیا جایگزینی برای SCP وجود دارد؟

SCP سریع و امن است و با دانستن سینتکس scp لینوکس مناسب و دانش عیب یابی، می تواند تنها ابزار مورد نیاز شما باشد. با این حال، بررسی جایگزین های آن ضرری ندارد.

  1.  rsync

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

مزایای  rsync

  • همگام سازی کارآمد فایل‌ها و دایرکتوری‌ها.
  • پشتیبانی از الگوریتم انتقال دلتا، کاهش انتقال داده‌ها.
  • می تواند نقل و انتقالات قطع شده را از سر بگیرد.

معایب rsync

  • نیاز به نصب rsync در هر دو سیستم مبدا و مقصد دارد.
  • در مقایسه با scp به تنظیمات و دستورات بیشتری نیاز دارد.
  1. SFTP 

SFTP راهی امن برای انتقال فایل‌ها از طریق SSH فراهم می‌کند. عملکرد مشابه FTP را ارائه می‌دهد اما مانند SCP از طریق یک اتصال SSH رمزگذاری شده عمل می‌کند. اما در برخی زمینه‌ها، مزایای SFTP بر مزایای SCP بیشتر است. SCP نمی تواند لیست دایرکتوری‌ها را ایجاد کند، دایرکتوری‌ها را ایجاد یا حذف کند، و غیره، اما SFTP می تواند همه این وظایف را انجام دهد.

مزایای SFTP

  • انتقال امن فایل با رمزگذاری
  • قابلیت مدیریت فایل از راه دور
  • در دسترس بودن گسترده در اکثر سیستم‌های لینوکس و یونیکس.

معایب SFTP

  • نحو و استفاده از دستور با FTP سنتی متفاوت است.
  • ممکن است در برخی از سیستم ها یا دستگاه های تعبیه شده پشتیبانی محدودی داشته باشد.
  1. FTP 

FTP یک پروتکل استاندارد پرکاربرد برای انتقال فایل است. در یک مدل سرور-کلاینت عمل می‌کند و قابلیت انتقال فایل اولیه را ارائه می‌دهد.

مزایای FTP

  • پشتیبانی گسترده در پلتفرم های مختلف
  • مشتریان خط فرمان و گرافیکی آشنا در دسترس هستند.

معایب FTP

  • فاقد رمزگذاری / امنیت کمتر در مقایسه با scp و sftp.
  • ممکن است برای ایجاد اتصالات نیاز به پیکربندی فایروال اضافی داشته باشد.
  • احراز هویت Plain text

به طور کلی، در حالی که scp یک انتخاب ساده و قابل اعتماد برای انتقال امن فایل از طریق SSH است، جایگزین هایی مانند rsync، sftp و FTP ممکن است بسته به نیازهای خاص ویژگی ها و انعطاف پذیری بیشتری ارائه دهند.
بنابراین چگونه تصمیم می گیرید کدام یک را انتخاب کنید؟ شما باید عواملی مانند امنیت، نیازهای همگام سازی، سهولت استفاده و سازگاری با سیستم ها و پروتکل های خود را در نظر بگیرید. به عنوان مثال، اگر امنیت و محرمانه بودن داده ها مهم ترین عوامل در انتقال فایل شما هستند، پس FTP انتخاب خوبی نیست.


نتیجه

SCP ابزاری سریع و امن برای انتقال فایل بین کامپیوترها است. می توانید از scp از راه دور به لوکال، از لوکال به راه دور و حتی بین دو سیستم ریموت برای انتقال فایل‌ها استفاده کنید. و اگرچه جایگزین‌هایی برای SCP وجود دارد که کار مناسبی را انجام می‌دهند، مانند rsync، اما از بسیاری جهات، به ویژه در امنیت و سرعت، از آنها فراتر می‌رود. در این مطلب، ما در مورد SCP، موارد استفاده آن، و گزینه های جایگزین صحبت کردیم .