تخفیف برای اولین خرید سرویس ابری با کد تخفیف: Welcome2XaaS

آموزش انتقال امن فایل‌ها از طریق...

تکنولوژی
آموزش انتقال امن فایل‌ها از طریق SFTP
تکنولوژی 1399/12/23

مزیت استفاده از این پروتکل، امکان استفاده از اتصال ایمن برای انتقال فایل ها وگذر از فایل سیستم­ها بر روی سیستم محلی و سرور مجازی است.

FTP یا "پروتکل انتقال فایل" یک روش محبوب بمنظور انتقال فایل ها بین دو سیستم ریموت (سرور مجازی) است.

SFTP  که مخفف پروتکل انتقال فایل با استفاده از SSH یا پروتکل امن انتقال فایل است، پروتکل جداگانه ای با SSH است که به روش مشابهی بر روی یک اتصال امن کار می­کند.

مزیت استفاده از این پروتکل، امکان استفاده از اتصال ایمن برای انتقال فایل ها وگذر از فایل سیستم­ها بر روی سیستم محلی و سیستم راه دور است.

تقریباً در همه موارد،  SFTP به دلیل ویژگی­های امنیتی اساسی و توانایی piggy-back در اتصال  SSH بر FTPارجحیت دارد.

 FTP یک پروتکل ناامن است که فقط باید در موارد محدود یا در شبکه­هایی که به آنها اعتماد دارید استفاده شود.

اگرچه SFTP در بسیاری از ابزارهای گرافیکی یکپارچه سازی شده است، این راهنما نحوه استفاده از آنرا از طریق خط فرمان تعاملی نشان می­دهد.

 

چگونه با SFTP ارتباط برقرار کنیم

به طور پیش فرض، SFTP از پروتکل SSH برای تأیید اعتبار و برقراری ارتباط امن استفاده می­کند. به همین دلیل، همان روش­های تأیید اعتبار که در SSH وجود دارد در اینجا نیز موجود است.

اگرچه رمزهای عبور به راحتی قابل استفاده و تنظیم هستند، اما توصیه می­کنیم کلیدهای SSH را ایجاد کرده و کلید عمومی خود را به هر سیستمی که برای دسترسی به آن نیاز دارید، انتقال دهید. این کار بسیار امن تر است و میتواند در درازمدت باعث صرفه جویی در وقت شما گردد.

اگر می­توانید با استفاده از SSH به سرور مجازی متصل شوید، پس تمامی مراحل لازم برای استفاده از SFTP را برای مدیریت فایل­ها به اتمام رسانده­اید.

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

 

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

 

با دستور زیر می­توانیم یک اتصال SSH برقرار نموده و سپس با استفاده از آن یک کانکشنSFTP باز کنیم:

 

شما به سیستم راه دور(سرور مجازی) وصل خواهید شد و اعلان (prompt) به SFTP تغییر می­یابد.

اگر روی پورت SSH تغییر یافته کار می­کنید (نه پورت پیش فرض 22)، می­توانید اتصال SFTP را به شرح زیر انجام دهید:

 

این دستور با استفاده از پورت مشخص شده، شما را به سیستم از راه دور (سرور مجازی) متصل می­کند.

 

 HELP در SFTP

مفیدترین دستور برای اولین یادگیری، دستور help است که با آن می­توان به خلاصه ای ازhelp   SFTPدسترسی پیدا کرد. هر کدام از دو دستور به همین منظور استفاده می­گردد:

 

 

با اجرای این دستور لیستی از دستورات موجود نمایش داده خواهد شد.

 

برخی از دستوراتی که در بخش­های زیر مشاهده می­کنید را بررسی خواهیم کرد.

 

بررسی برخی از دستورات SFTP

ابتدا، با پیدا کردن اینکه در حال حاضر درکدام مسیر یا دایرکتوری سیستم از راه دور قرار داریم، جهت کاری خود را مشخص می­نماییم. درست مانند یک typical shell، می توانیم دستور زیر را برای دریافت مسیر فعلی تایپ کنیم:

 

 

ما می­توانیم محتویات دایرکتوری فعلی سیستم از راه دور را با یک فرمان آشنای دیگر مشاهده کنیم:

 

 

توجه داشته باشید که دستورات درون رابط SFTP دستورات shell معمولی نیستند و به آن اندازه دارای ویژگی های متعدد نمی باشند، اما آنها برخی از flag های مهم تر اختیاری (optional) را پیاده سازی می کنند:

 

 

برای رسیدن به یک دایرکتوری دیگر، می­توانیم این دستور را استفاده کنیم:

 

اکنون می­توانیم در سیستم راه دور دستورات را اجرا نماییم، اما اگر به فایل سیستم محلی خود نیاز پیدا کنیم، چه باید کرد؟ ما می­توانیم دستورات خود را به سمت فایل سیستم محلی هدایت کنیم اگر قبل از دستورات ازحرف“ l “ استفاده نماییم.

 

 

محتوای دایرکتوری موجود را در سیستم محلی را نیز بدین شکل میتوان لیست نمود:

 

می­توان دایرکتوری مورد نظر را برای تعامل با سیستم محلی تغییر داد:

 

انتقال فایل ها با SFTP

پیمایش فایل سیستم­ها بین سیستم­های از راه دور و محلی بدون انتقال فایل­ها از قابلیت­های محدودی برخوردار است.

انتقال فایل­ها از سرور مجازی به سیستم محلی:

اگر ­می­خواهیم فایل­ها را از هاست سیستم از راه دور (سرور مجازی) خود بارگیری کنیم، می­توانیم با صدور دستور زیر این کار را انجام دهیم:

 

 

 

 

 

همانطورکه می­بینیم، به طور پیش فرض، فرمان "get" یک فایل از راه دور را با همین نام در فایل سیستم محلی دانلود می­کند.

با مشخص کردن نام پس از آن، می­توانیم فایل راه دور یا ریموت را به نام دیگری کپی کنیم:

 

فرمان "get" همچنین برخی از flag  های اختیاری را به خود اختصاص می­دهد. به عنوان مثال، می­توانیم با مشخص کردن recursive ، یک دایرکتوری و تمام محتویات آن را کپی کنیم:

 

ما می­توانیم به SFTP بگوییم که مجوزها و زمانهای دسترسی مناسب را با استفاده از فلگ "-P" یا "-p" حفظ کند.

 

انتقال فایل­ها به سیستم از راه دور به آسانی با استفاده از دستور "put" انجام می­شود:

 

همان فلگ­هایی که با "get" کار می­کنند، برای "put" نیز اعمال می­شود. بنابراین برای کپی کردن یک دایرکتوری کامل محلی ، می توانید از فلگ-r  استفاده کنید.

 

در نسخه­های  Open-ssh که بر روی اوبونتو (حداقل 14.04 تا 15.10) کار می­کنند اشکالی وجود دارد که مانع از اجرای صحیح دستور فوق می­شود.

پس از اجرای دستور فوق برای انتقال محتوا به سرور مجازی با استفاده از نسخه­های دارای اشکال،‌ با خطای زیر مواجه می­شویم:

 

Couldn't canonicalise: No such file or directory.

 

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

یک دستور آشنا که هنگام دانلود و آپلود فایل­ها مفید است، دستور "df" است که مشابه همان دستور کامند لاین می­باشد. با استفاده از این دستور، می­توانید فضای کافی را برای تکمیل نقل و انتقالات مورد نظر خود بررسی کنید:

 

لطفا توجه داشته باشید این دستور نمایش دهنده فضای سیستم از راه دور است. برای سیستم محلی میتوان از !  به شکل زیر استفاده نمود:

 

هر دستور محلی دیگر همانطور که انتظار می­رود کار خواهد کرد. برای بازگشت بهSFTP ، می­توان از  exit استفاده کرد.

 

تغییر دادن فایل­های ساده با  SFTP

SFTP به شما این امکان را می­دهد تا تغییراتی که هنگام کار با سلسله مراتب فایل مفید است را انجام دهید.

به عنوان مثال، می­توانید owner یک فایل در سیستم از راه دور را تعیین کنید:

 

توجه کنید که برخلاف دستور "chmod" سیستم، دستورSFTP  نام کاربری را نمی­پذیرد، بلکه در عوض از UID ها استفاده می­کند.

متأسفانه، هیچ راهی آسان برای شناخت UID مناسب از درون رابط SFTP وجود ندارد.

 

توجه کنید که چگونه از ! به عنوان پیشوند برای فرمان محلی استفاده کرده­ایم. این کار برای اجرای هر دستور موجود در دستگاه محلی ما است و می­توانست از آن با دستور "df" محلی استفاده شود. همانطور که می­دانیم ستون سوم نمایش دهنده UID است.

به طور مشابه، می­توانیم مالک یا owner گروه را تغییر دهیم:

باز هم، هیچ راه آسانی برای تهیه لیست گروه­های سیستم از راه دور وجود ندارد. ما می­توانیم با دستور زیر این کار را انجام دهیم:

 

ستون سوم نمایش دهنده GID است.

خوشبختانه، فرمان "chmod" همانطور که انتظار می­رود روی فایل سیستم راه دور انجام می­شود:

 

هیچ دستوری برای تغییردادن مجوزهای فایل محلی وجود ندارد، اما می­توانید umask محلی را تنظیم کنید، به طوری که هر فایلی که در سیستم محلی کپی شده باشد، دارای مجوزهای مناسب خواهد بود.

این امر با دستور lumask امکان پذیر است.

 

اکنون تمام فایل­های دانلود شده (تا زمانی که از فلگ "-p" استفاده نشود) دارای مجوز ۶۴۴ هستند.

در SFTP با دستورات mkdir و lmkdir به ترتیب دایرکتوری در فایل سیستم محلی و راه دور ایجاد می­شود.

توجه کنید که بقیه دستورات فقط فایل سیستم راه دور را هدف قرار می­دهند.

 

!‌ قبل از دستورات، آنها را در سیستم محلی پیاده می­کند.

 

برای بستن کانکشن SFTP از exit یا bye استفاده می­کنیم.

 

نتیجه گیری:

اگرچه  SFTP ابزاری ساده است، اما برای مدیریت سرورها و انتقال فایل­ها بین آنها بسیار مفید است.

به عنوان مثال، می­توانید از SFTP استفاده کنید تا کاربران خاص بتوانند فایل ها را بدون دسترسی به SSH انتقال دهند.

اگر عادت دارید از FTP یا SCP برای انجام نقل و انتقالات خود استفاده کنید، SFTP راهی مناسب برای تقویت نقاط قوت هر دو است.

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

...
...