تا مدتها FTP یک روش محبوب برای انتقال فایلها بین دو سرور بهشمار میرفت اما اکنون بهدلیل مشکلات امنیتی و رمزگذارینشدن این پروتکل، FTP دیگر جایی میان توسعهدهندگان ندارد.
SFTP که مخفف Secure File Transfer Protocol است، یک پروتکل در SSH است که میتواند دستورات FTP را از طریق یک اتصال امن پیادهسازی کند و جایگزینی برای FTP است.
در این راهنما به شیوهی استفاده از SFTP در سرورهای لینوکس میپردازیم.
اتصال با SFTP
به طور پیش فرض، SFTP از پروتکل SSH برای احراز هویت و ایجاد یک اتصال امن استفاده میکند. به همین دلیل، همان روشهای احراز هویت موجود در SSH برای SFTP هم قابل استفاده است.
اگر میتوانید با استفاده از SSH به سرور مقصد متصل شوید، همهی پیشنیازهای لازم برای استفاده از SFTP را دارید. با دستور زیر دسترسی SSH را تست کنید:
ssh username@IP
اگر با SSH به سرور متصل شدید، با تایپ کردن دستور زیر از آن خارج شوید:
exit
اکنون میتوانیم با اجرای دستور زیر از طریق SFTP به سرور متصل شویم:
sftp username@IP
اکنون شما به سرور مقصدتان متصل شدهاید و Prompt شما به sftp
اگر سرور مقصد روی پورت SSHای به جز پورت 22 تنظمی شده است، میتوانید از دستور زیر استفاده کنید:
sftp -oPort=port username@IP
دستورهای موجود در SFTP
مفیدترین دستوری که در کار با SFTP به شما کمک میکند، دستور help است که خروجی آن به شما امکان دسترسی به خلاصه ای از دستورهای SFTP را میدهد.
help
یا
?
با این کار لیستی از دستورات موجود نمایش داده میشود:
جابهجا شدن در دایرکتوریها با SFTP
شما میتوانید با استفاده از دستورهای رایج سیستمعاملهای لینوکس در میان دایرکتوریها و فایلهای سرور مقصد جابهجا شوید.
ابتدا، میتوانید با استفاده از دستور زیر بررسی کنید که در کدام دایرکتوری هستید:
pwd
سپس میتوانید محتویات دایرکتوری فعلی را مشاهده کنید:
ls
توجه داشته باشید که دستورهای موجود در SFTP دقیقن مطابق با دستورهای سیستمعامل نیستند و شامل همهی سوییچها و فلگ ها نمیشوند. با این حال، اضافه کردن برخی از فلگهای مهمتر مانند la
ls -la
برای رفتن به دایرکتوری دیگر، میتوانید این دستور را اجرا کنید:
cd testSFTP
اگر بخواهید این دستورها به جای سرور مقصد در سرور فعلی و مبدا اجرا شود باید به ابتدای همهی دستورها حرف l
برای نمونه، برای اینکه ببینید در حال حاضر در کدام دایرکتوری هستید، دستور زیر را اجرا کنید:
lpwd
هم چنین میتوانید دایرکتوریای را که میخواهید در سرور محلی با آن تعامل داشته باشید تغییر دهید:
lcd Desktop
انتقال فایلها با SFTP
اگر میخواهید فایلهایی را از سرور مقصد دانلود کنید، میتوانید این کار را با استفاده از دستور get
get test.txt
بهطور پیش فرض، get
شما میتوانید این فایل را با تعیین نام دلخواهتان بهعنوان آرگومان دستور، به نام دیگری ذخیره کنید:
get test.txt localFile
همچنین میتوانید یک دایرکتوری و تمام محتویات آن را با دستور زیر کپی کنید:
get -r testSFTP
انتقال فایلهای سرور مبدا به سرور مقصد
انتقال فایلها به سرور مقصد به همین روش انجام میشود، اما با دستور put
put first.txt
همان پرچمهایی که get
put
put -r myDir
یکی از ابزارهای آشنا که هنگام دانلود و آپلود فایلها مفید است دستور df
df -h
برای اینکه این دستور را در سرور فعلی اجرا کنیم، راهی جز خروج از SFTP ندارید. با تایپ کردن دستور زیر وارد Shell سرور میشوید:
!
و سپس میتوانید دستور df
df -h
برای بازگشت به SFTP ، این دستور را اجرا کنید:
exit
خروج از SFTP
هر زمان که کارتان با SFTP به پایان رسید، از عبارت exit
bye
bye