تا مدت‌ها 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 برای مشاهده‌ی متادیتا و مجوزهای فایل در SFTP امکان‌پذیر است:

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