
پروتکل انتقال فایل (به اختصار FTP) یک روش محبوب و رمزگذاری نشده برای انتقال فایل ها بین دو سیستم راه دور است. با این حال، از سال 2022، اکثر نرم افزارهای مدرن به دلیل ناامنی استفاده نمی شوند و بیشتر در برنامه های قدیمی استفاده می شوند.
پروتکل انتقال فایل امن (به اختصار SFTP) یک پروتکل مجزا از SSH است و دستورات FTP را در یک اتصال امن اجرا می کند. SFTP معمولاً می تواند به عنوان یک جایگزین در هر منطقه ای که دسترسی به سرور FTP مورد نیاز است عمل کند.
در بیشتر موارد، SFTP به دلیل ویژگی های امنیتی اولیه و توانایی تکیه بر اتصال SSH به FTP ترجیح داده می شود. پروتکل FTP کمی ناامن است. بنابراین، فقط باید در موارد محدود یا در شبکه های امن استفاده شود.
از آنجایی که SFTP در بسیاری از ابزارهای گرافیکی تعبیه شده است، در این مقاله نحوه استفاده از آن را از طریق رابط خط فرمان تعاملی به شما آموزش می دهیم.
نحوه اتصال به SFTP
به طور پیش فرض، SFTP از پروتکل SSH برای احراز هویت و اتصال ایمن استفاده می کند. به همین دلیل، SFTP از همان روش های احراز هویت SSH استفاده می کند.
به طور پیش فرض، می توانید با یک رمز عبور احراز هویت کنید. اما توصیه می کنیم ابتدا کلیدهای SSH را ایجاد کنید و سپس کلید عمومی خود را به سیستمی که باید دسترسی داشته باشید منتقل کنید. این روش بسیار ایمن تر است و در طولانی مدت باعث صرفه جویی در وقت شما می شود.
اگر قبلاً این کار را نکردهاید، لطفاً این راهنما را برای پیکربندی کلیدهای SSH برای دسترسی به سرور خود بخوانید. در صورت امکان از طریق SSH به دستگاه متصل شوید. به این ترتیب شما تمام الزامات استفاده از SFTP در مدیریت فایل را برآورده کرده اید. با دستور زیر دسترسی SSH را تست کنید:
$ ssh [email protected]_server_ip_or_remote_hostname
اگر پاسخ مثبت است، با تایپ دستور زیر خارج شوید:
$ exit
اکنون می توانید با صدور دستور زیر یک جلسه SFTP ایجاد کنید:
$ sftp [email protected]_server_ip_or_remote_hostname
سپس به سیستم راه دور متصل می شوید و درخواست شما به یک اعلان SFTP تغییر می کند.
اگر روی یک پورت SSH سفارشی کار می کنید (به غیر از درگاه پیش فرض 22)، می توانید جلسه SFTP را به صورت زیر باز کنید:
$ sftp -oPort=custom_port [email protected]_server_ip_or_remote_hostname
این دستور شما را از طریق پورت مشخص شده به سیستم ریموت متصل می کند.
چگونه به SFTP وصل شوم؟
از SFTP Help استفاده کنید
مفیدترین دستور دستور Help است. این دستور به شما امکان می دهد به خلاصه ای از سایر دستورات SFTP دسترسی داشته باشید. با نوشتن یکی از موارد زیر در اعلان تماس بگیرید:
sftp> help
یا
sftp> ?
این لیستی از دستورات موجود را نشان می دهد:
Output Available commands: bye Quit sftp cd path Change remote directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown own path Change owner of file 'path' to 'own' df [-hi] [path] Display statistics for current directory or filesystem containing 'path' exit Quit sftp get [-Ppr] remote [local] Download file help Display this help text lcd path Change local directory to 'path' . . .
در بخش های بعدی به بررسی برخی از دستورات خواهیم پرداخت.
مقاله زیر به مقایسه کامل سرویس های انتقال فایل FTP و SFTP و کاربرد آنها می پردازد
تفاوت FTP و SFTP چیست؟
نحوه استفاده از راهنمای SFTP
ناوبری SFTP
با تعدادی از دستورات مشابه دستورات شل، می توانید مسیرهای مختلف بین فایل ها (به اصطلاح ناوبری) را در سیستم از راه دور جستجو کنید. مسیریابی را با یافتن دایرکتوری فعلی خود در سیستم راه دور شروع کنید. درست مانند یک جلسه معمولی Shell، می توانید برای دریافت فهرست فعلی، موارد زیر را وارد کنید:
sftp> pwd
Output Remote working directory: /home/demouser
شما می توانید محتویات دایرکتوری فعلی سیستم راه دور را با دستور شناخته شده دیگری مشاهده کنید:
sftp> ls
Output Summary.txt info.html temp.txt testDirectory
توجه داشته باشید که دستورات در رابط SFTP یک به یک با نحو معمولی Shell مطابقت ندارند و از نظر توابع تکامل چندانی ندارند. با این حال، آنها برخی از پرچم های اختیاری مهم تر را انجام می دهند. افزودن la- به ls برای مشاهده فراداده ها و مجوزهای بیشتر:
sftp> ls –la
Output drwxr-xr-x 5 demouser demouser 4096 Aug 13 15:11 . drwxr-xr-x 3 root root 4096 Aug 13 15:02 .. -rw------- 1 demouser demouser 5 Aug 13 15:04 .bash_history -rw-r--r-- 1 demouser demouser 220 Aug 13 15:02 .bash_logout -rw-r--r-- 1 demouser demouser 3486 Aug 13 15:02 .bashrc drwx------ 2 demouser demouser 4096 Aug 13 15:04 .cache -rw-r--r-- 1 demouser demouser 675 Aug 13 15:02 .profile . . .
برای دسترسی به دایرکتوری دیگر، می توانید این دستور را صادر کنید:
sftp> cd testDirectory
اکنون می توانید به سیستم فایل راه دور دسترسی داشته باشید. اما چگونه می توانید به فایل های سیستم محلی خود دسترسی پیدا کنید؟ با قرار دادن l (دایرکتوری محلی) قبل از دستورات، دستورات را مستقیماً برای دسترسی به فایل های سیستم محلی اجرا می کنید. تا اینجا همه این دستورات معادلاتی برای سیستم محلی دارند. با این دستور می توانید دایرکتوری محلی کار را چاپ کنید:
sftp> lpwd
Output Local working directory: /Users/demouser
با دستور زیر می توانید محتویات دایرکتوری فعلی را در ماشین محلی فهرست کنید:
sftp> lls
Output Desktop local.txt test.html zebra.html analysis.rtf Documents
همچنین می توانید دایرکتوری را در سیستم تعامل محلی تغییر دهید:
sftp> lcd Desktop
نحوه انتقال فایل بین دو سرور با استفاده از SFTP
انتقال فایل ها با SFTP
برای دانلود فایل ها از هاست خود از دستور get استفاده کنید:
sftp> get remoteFile
Output Fetching /home/demouser/remoteFile to remoteFile /home/demouser/remoteFile 100% 37KB 36.8KB/s 00:01
همانطور که می بینید، به طور پیش فرض دستور get فایل راه دور را در فایلی به همین نام در سیستم محلی دانلود می کند.
سپس می توانید فایل راه دور را به نام دیگری کپی کنید (با نامگذاری آن):
sftp> get remoteFile localFile
دستور get برخی از گزینه های پرچم را نیز می پذیرد. به عنوان مثال، می توانید یک دایرکتوری و تمام محتویات آن را با تعیین گزینه Recursive کپی کنید:
sftp> get -r someDirectory
همچنین میتوانید به SFTP بگویید که مجوزها و زمانهای دسترسی صحیح را با استفاده از پرچم P یا p حفظ کند:
sftp> get -Pr someDirectory
برای آموزش انتقال ایمن فایل ها بین دو سرور لینوکس مقاله زیر را از دست ندهید.
انتقال فایل بین دو سرور لینوکس
فایل های محلی را به سیستم راه دور منتقل کنید
فایل ها به همین ترتیب به سیستم راه دور منتقل می شوند. اما با دستور put:
sftp> put localFile
Output Uploading localFile to /home/demouser/localFile localFile 100% 7607 7.4KB/s 00:00
همان پرچم هایی که با get کار می کنند برای قرار دادن اعمال می شوند. بنابراین برای کپی کردن کل فهرست محلی، می توانید put -r را اجرا کنید:
sftp> put -r localDirectory
دستور df یکی از ابزارهای آشناست که برای دانلود یا آپلود فایل ها مفید است. این دستور مشابه نسخه خط فرمان عمل می کند و می توانید از آن استفاده کنید تا مطمئن شوید فضای کافی برای تکمیل نقل و انتقالات خود دارید:
sftp> df –h
Output Size Used Avail (root) %Capacity ۱۹٫۹GB 1016MB 17.9GB 18.9GB 4%
لطفا توجه داشته باشید که این دستور بومی سازی نشده است. اما می توانید از دستور استفاده کنید! دورش بگرد سفارش! شما را به Shell Local می فرستد. جایی که هر دستور می تواند در سیستم محلی اجرا شود. با تایپ دستورات زیر می توانید میزان استفاده از دیسک را بررسی کنید:
sftp> !
و سپس
$ df –h
Output Filesystem Size Used Avail Capacity Mounted on /dev/disk0s2 595Gi 52Gi 544Gi 9% / devfs 181Ki 181Ki 0Bi 100% /dev map -hosts 0Bi 0Bi 0Bi 100% /net map auto_home 0Bi 0Bi 0Bi 100% /home
هر دستور محلی دیگری به همین ترتیب کار خواهد کرد. برای بازگشت، وارد جلسه SFTP شوید:
$ exit
اکنون باید بازگشت promt SFTP را ببینید.
نحوه اتصال به سرور SFTP و انتقال فایل ها از راه دور را بیاموزید
فایل های ساده را با SFTP دستکاری کنید
SFTP به شما امکان می دهد فایل های ذخیره شده سیستم را اجرا کنید. به عنوان مثال، می توانید با استفاده از خط زیر مالک یک فایل را در سیستم راه دور تغییر دهید:
sftp> chown userID file
توجه داشته باشید که برخلاف دستور chmod system، دستور SFTP نام کاربری را نمی پذیرد. اما در عوض از UID استفاده می کند. متأسفانه، هیچ راه از پیش ساخته شده ای برای دانستن UID صحیح از طریق رابط SFTP وجود ندارد. به عنوان یک راه حل، می توانید از فایل / etc / passwd که نام های کاربری را با UID ها در اکثر محیط های لینوکس مرتبط می کند، بخوانید:
sftp> get /etc/passwd sftp> !less passwd
Output root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh . . .
توجه کنید که چگونه به جای استفاده از دستور! شما از آن به عنوان پیشوند دستور Local Shell استفاده کردید. این برای اجرای هر فرمان روی ماشین محلی کار می کند و می توان از قبل با دستور محلی df استفاده کرد.
UID همانطور که با کاراکترهای کولون نشان داده شده است در ستون سوم فایل قرار خواهد گرفت. همچنین، میتوانید مالک گروه فایل را با استفاده از خط زیر تغییر دهید:
sftp> chgrp groupID file
باز هم، هیچ راهی داخلی برای دریافت لیستی از گروه های سیستم از راه دور وجود ندارد و می توانید با دستور زیر آن را دور بزنید:
sftp> get /etc/group sftp> !less group
Output root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: . . .
ستون سوم شامل شناسه گروه مرتبط با حروف ستون اول است که همان چیزی است که شما به دنبال آن هستید. دستور chmod از SFTP معمولاً روی سیستم فایل راه دور کار می کند:
sftp> chmod 777 publicFile
Output Changing mode on /home/demouser/publicFile
هیچ دستوری معادل برای دستکاری مجوزهای فایل محلی وجود ندارد. اما می توانید یک umask محلی تنظیم کنید. در این حالت، هر فایل کپی شده در سیستم محلی مجوزهای مربوط به خود را خواهد داشت. این کار را می توان با دستور lumask انجام داد:
sftp> lumask 022
Output Local umask: 022
اکنون تمام فایل های دانلود شده معمولی دارای مجوز 644 خواهند بود، مگر اینکه از p-flag استفاده شود. به SFTP اجازه دهید به ترتیب با استفاده از lmkdir و mkdir دایرکتوری هایی را در سیستم های محلی و راه دور ایجاد کند. دستورات فایل باقیمانده فقط به سیستم فایل راه دور هدایت می شوند:
sftp> ln sftp> rm sftp> rmdir
این دستورات رفتار اصلی معادلات شل خود را تکرار می کنند. اگر می خواهید این کارها را در سیستم فایل محلی انجام دهید، با این دستور وارد Shell شوید:
sftp> !
یا با اجرای دستوری با پیشوند! در سیستم محلی مانند:
sftp> !chmod 644 somefile
هنگامی که جلسه SFTP خود را به پایان رساندید، از خروج یا بای برای بستن اتصال استفاده کنید:
sftp> bye
نتیجه
نحو SFTP بسیار کوچکتر از ابزارهای مدرن شل است. با این حال، اطمینان از سازگاری با نحو FTP قدیمی یا محدود کردن عملکردهای موجود برای کاربران راه دور در برخی از محیطها میتواند مفید باشد.
اگر به استفاده از FTP یا SCP برای انجام نقل و انتقالات خود عادت دارید، SFTP یک راه عالی برای استفاده از هر دو است. این برای هر موقعیتی مناسب نیست. اما یک ابزار انعطاف پذیر خوب به شما می دهد.
سوالات متداول
1. چگونه انتقال FSFTP را تنظیم کنم؟
- کلیدهای SSH ایجاد کنید
- کلید عمومی SSH را در سرور راه دور کپی کنید
- اتصال SFTP را تنظیم کنید
انتقال فایل ها از سرورهای راه دور به سیستم های محلی - انتقال فایل ها از سیستم های محلی به سرورهای راه دور
2. چگونه فایل ها را به سرور راه دور منتقل کنم؟
می توانید از دستور SCP برای کپی فایل ها از سیستم محلی به سرور راه دور یا از سرور راه دور به سیستم محلی استفاده کنید. SCP مخفف Secure Copy است و دستوری است که برای کپی فایل ها از طریق ترمینال استفاده می شود. همچنین می توانید از SCP در لینوکس، ویندوز و مک استفاده کنید.
3. آیا SFTP هنگام انتقال فایل را قفل می کند؟
شما می توانید قفل فایل SFTP را فعال کنید تا از تغییر دادن فایل ها توسط کاربران در حین انتقال SFTP جلوگیری شود. به طور پیش فرض، قفل فایل SFTP غیرفعال است.
{“@context”: “https://schema.org”، “@type”: “FAQPage”، “mainEntity”: [{
“@type”: “Question”,
“name”: “چگونه انتقال SFTP را تنظیم کنیم؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “ایجاد کلیدهای SSH
کپیکردن کلید عمومی SSH در سرور ریموت
راهاندازی اتصال SFTP
انتقال فایلها از سرورهای ریموت به سیستمهای لوکال
انتقال فایلها از سیستمهای لوکال به سرورهای ریموت”
}
},{
“@type”: “Question”,
“name”: “چگونه فایلها را به سرور ریموت منتقل کنیم؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “برای کپی فایلها از سیستم لوکال به سرور ریموت یا سرور ریموت به سیستم لوکال، میتوانید از دستور SCP استفاده کنید. SCP مخفف Secure Copy و دستوری است که برای کپیکردن فایلها ازطریق ترمینال استفاده میشود. همچنین، میتوانید از SCP در لینوکس و ویندوز و مک استفاده کنید.”
}
},{
“@type”: “Question”,
“name”: “آیا هنگام انتقال، SFTP فایل را قفل میکند؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “برای جلوگیری از تغییر فایلها بهوسیله کاربران درحالیکه SFTP آنها را منتقل میکند، قفل فایل SFTP را میتوانید فعال کنید. بهطور پیشفرض، قفل فایل SFTP غیرفعال است.”
}
}]
}
نحوه استفاده از SFTP برای انتقال ایمن فایل ها به سرور راه دور اولین بار در پارس پک. به نظر می رسد.