
مقدمه
FTP یا پروتکل انتقال فایل (File Transfer Protocol)، روشی محبوب و بدون رمزنگاری برای انتقال فایل بین دو سیستم ریموت بود. از سال ۲۰۲۲ به بعد، استفاده از FTP در محیطهای مدرن بهشدت منصرف شده است؛ چون امنیت ندارد و عمدتاً فقط در سیستمهای قدیمی (Legacy) به کار میرود.
SFTP که مخفف پروتکل انتقال امن فایل (Secure File Transfer Protocol) است، یک پروتکل جداگانه است که درون SSH ساخته شده و انتقال فایل را روی یک اتصال امن پیادهسازی میکند. معمولاً میتواند بهعنوان جایگزین مستقیم (Drop-in) در هر جایی که هنوز به سرور FTP نیاز دارید، استفاده شود.
در تقریباً همه موارد، SFTP به FTP ترجیح داده میشود؛ چون از نظر امنیت در لایه زیرین قویتر است و میتواند روی یک اتصال SSH «سوار» شود. FTP یک پروتکل ناامن است که فقط باید در موارد محدود یا روی شبکههایی که به آنها اعتماد دارید استفاده شود.
هرچند SFTP در بسیاری از ابزارهای گرافیکی هم یکپارچه شده، اما این راهنما نحوه استفاده از آن را از طریق رابط خط فرمان تعاملیاش نشان میدهد.
نکات کلیدی
- SFTP یک پروتکل امن انتقال فایل است که درون SSH ساخته شده، دادهها را هنگام انتقال رمزنگاری میکند و بهطور کلی جایگزین امنتری برای FTP قدیمی است.
- میتوانید با همان اطلاعات کاربری و روشهای احراز هویت SSH به سرور SFTP وصل شوید؛ از جمله دسترسی با رمز عبور و دسترسی مبتنی بر کلید SSH.
- نشست SFTP از خط فرمان با سینتکس
sftp user@hostشروع میشود و در صورت نیاز از پورتهای سفارشی SSH پشتیبانی میکند. - شل تعاملی SFTP دستورهای آشنای ناوبری مانند
ls،cdوpwdرا در اختیارتان میگذارد؛ بههمراه نسخههای محلی آنها که با پیشوندlشروع میشوند. - فایلها و دایرکتوریها را میتوان بهشکل امن بین سیستم محلی و ریموت با دستورات
getوputمنتقل کرد؛ شامل گزینههای بازگشتی (Recursive) و حفظ مجوزها. - دستور
!به شما اجازه میدهد در طول نشست SFTP بهطور موقت به شل محلی دسترسی پیدا کنید و دستورات سیستم محلی را اجرا کنید. - SFTP از وظایف پایه مدیریت فایل در سمت ریموت پشتیبانی میکند؛ مانند تغییر مجوزها، تغییر مالک و ساخت یا حذف دایرکتوریها.
- استفاده موفق از SFTP به سرویس SSHِ درست کارکردن وابسته است و بیشتر مشکلات اتصال یا مجوز را میتوان از طریق پیکربندی SSH و مجوزهای سیستم فایل حل کرد.
نحوه اتصال با SFTP
بهصورت پیشفرض، SFTP از پروتکل SSH برای احراز هویت و برقراری اتصال امن استفاده میکند. به همین دلیل، همان روشهای احراز هویتی که در SSH موجود هستند، اینجا هم در دسترساند.
هرچند بهصورت پیشفرض میتوانید با رمز عبور احراز هویت کنید، اما توصیه میکنیم کلیدهای SSH بسازید و کلید عمومیتان را به هر سیستمی که نیاز به دسترسی دارید منتقل کنید. این روش بسیار امنتر است و در بلندمدت زمان شما را حفظ میکند.
اگر هنوز این کار را نکردهاید، راهنمای ساخت کلیدهای SSH در پارمین کلود را برای دسترسی به سرورتان ببینید.
اگر میتوانید با SSH به ماشین وصل شوید، یعنی تمام پیشنیازهای لازم برای استفاده از SFTP برای مدیریت فایلها را دارید. دسترسی SSH را با این دستور تست کنید:
ssh sammy@your_server_ip_or_remote_hostname
اگر کار کرد، با تایپ این دستور از آن خارج شوید:
exit
حالا میتوانیم یک نشست SFTP را با اجرای دستور زیر برقرار کنیم:
sftp sammy@your_server_ip_or_remote_hostname
به سیستم ریموت وصل میشوید و پرامپت شما به پرامپت SFTP تغییر میکند.
اگر روی یک پورت SSH سفارشی کار میکنید (نه پورت پیشفرض 22)، نشست SFTP را به این شکل باز کنید:
sftp -oPort=custom_port sammy@your_server_ip_or_remote_hostname
این دستور شما را از طریق پورت مشخصشده به سیستم ریموت متصل میکند.
گرفتن راهنما در SFTP
مفیدترین دستوری که باید اول یاد بگیرید، دستور help است. این دستور به شما یک خلاصه از بقیه دستورات SFTP میدهد. میتوانید با تایپ هر کدام از این دو در پرامپت، آن را فراخوانی کنید:
help
یا
?
فهرست دستورات موجود نمایش داده میشود:
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'
. . .
در بخشهای بعدی، برخی از این دستورات را بررسی میکنیم.
ناوبری با SFTP
میتوانیم با تعدادی دستور که مشابه نسخههای شلشان عمل میکنند، در سلسلهمراتب فایل سیستم ریموت حرکت کنیم.
اول، خودمان را جهتیابی کنیم؛ با فهمیدن اینکه الان در کدام دایرکتوری روی سیستم ریموت هستیم. درست مثل یک نشست شل معمولی، میتوانیم برای گرفتن دایرکتوری فعلی این را تایپ کنیم:
pwd
خروجی:
Remote working directory: /home/demouser
میتوانیم محتوای دایرکتوری فعلی سیستم ریموت را با یک دستیر آشنای دیگر ببینیم:
ls
خروجی:
Summary.txt info.html temp.txt testDirectory
دقت کنید که دستورات موجود در رابط SFTP، تطابق یکبهیک با سینتکس شل معمولی ندارند و به آن اندازه پرامکانات نیستند. با این حال، برخی از فلگهای اختیاری مهمتر را پیادهسازی میکنند؛ مانند اضافه کردن -la به ls برای دیدن متادیتای بیشتر و مجوزهای فایلها:
ls -la
خروجی:
drwxr-xr-x 5 demouser demouser 4096 Aug 13 15:11 .
drwxr-xr-x 3 root root 4096 Aug 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
. . .
برای رفتن به دایرکتوری دیگر، این دستور را اجرا میکنیم:
cd testDirectory
حالا میتوانیم در سیستم فایل ریموت حرکت کنیم؛ اما اگر نیاز به دسترسی به سیستم فایل محلی خودمان داشته باشیم چه؟ میتوانیم دستورات را به سمت سیستم فایل محلی هدایت کنیم؛ کافی است به آنها یک l (مخفف local یا محلی) پیشوند بدهیم.
همه دستوراتی که تا حالا بررسی کردیم، نسخه محلی دارند. میتوانیم دایرکتوری کاری محلی را چاپ کنیم:
lpwd
خروجی:
Local working directory: /Users/demouser
محتوای دایرکتوری فعلی روی ماشین محلی را فهرست میکنیم:
lls
خروجی:
Desktop local.txt test.html
Documents analysis.rtf zebra.html
همچنین میتوانیم دایرکتوریای را که روی سیستم محلی میخواهیم با آن کار کنیم، تغییر دهیم:
lcd Desktop
انتقال فایل با SFTP
اگر بخواهیم فایلهایی را از هاست ریموت دانلود کنیم، میتوانیم از دستور get استفاده کنیم:
get remoteFile
خروجی:
Fetching /home/demouser/remoteFile to remoteFile
/home/demouser/remoteFile 100% 37KB 36.8KB/s 00:01
همانطور که میبینید، دستور get بهصورت پیشفرض یک فایل ریموت را با همان نام روی سیستم فایل محلی دانلود میکند.
میتوانیم فایل ریموت را با نام دیگری کپی کنیم؛ کافی است نام را بعدش مشخص کنیم:
get remoteFile localFile
دستور get چند فلگ اختیاری هم میپذیرد. مثلاً میتوانیم یک دایرکتوری و همه محتوایش را با مشخص کردن گزینه بازگشتی (Recursive) کپی کنیم:
get -r someDirectory
میتوانیم به SFTP بگوییم مجوزها و زمانهای دسترسی مناسب را با فلگ -P یا -p حفظ کند:
get -Pr someDirectory
انتقال فایلهای محلی به سیستم ریموت
انتقال فایل به سیستم ریموت به همان شکل کار میکند، اما با دستور put:
put localFile
خروجی:
Uploading localFile to /home/demouser/localFile
localFile 100% 7607 7.4KB/s 00:00
همان فلگهایی که با get کار میکنند، برای put هم اعمالاند. پس برای کپی کردن یک دایرکتوری محلی کامل، میتوانید put -r را اجرا کنید:
put -r localDirectory
یک ابزار آشنا که هنگام دانلود و آپلود فایل مفید است، دستور df است که مشابه نسخه خط فرمانیاش کار میکند. با این دستور میتوانید بررسی کنید فضای کافی برای انجام انتقالهایی که در نظر دارید دارید یا نه:
df -h
خروجی:
Size Used Avail (root) %Capacity
19.9GB 1016MB 17.9GB 18.9GB 4%
لطفاً توجه کنید که نسخه محلی برای این دستور وجود ندارد، اما میتوانیم با اجرای دستور ! این محدودیت را دور بزنیم.
دستور ! ما را به یک شل محلی میبرد که میتوانیم در آن هر دستوری که روی سیستم محلیمان موجود است را اجرا کنیم. مصرف دیسک را میتوانیم با تایپ این بررسی کنیم:
!
و سپس:
df -h
خروجی:
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
باید ببینید که پرامپت SFTP برمیگردد.
دستکاریهای ساده فایل با SFTP
SFTP به شما اجازه میدهد برخی از کارهای نگهداری سیستم فایل را انجام دهید. مثلاً میتوانید مالک یک فایل روی سیستم ریموت را با این دستور تغییر دهید:
chown userID file
دقت کنید که برخلاف دستور سیستمی chmod، دستور SFTP نام کاربری نمیپذیرد، بلکه از UID استفاده میکند. متأسفانه راه داخلی برای فهمیدن UID مناسب از داخل رابط SFTP وجود ندارد.
بهعنوان راهحل جایگزین، میتوانید از فایل /etc/passwd بخوانید که در بیشتر محیطهای لینوکسی، نامهای کاربری را به UIDها مرتبط میکند:
get /etc/passwd
!less passwd
خروجی:
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/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
. . .
نکته: اگر کاربر ریموت به یک محیط chroot محدود شده باشد، ممکن است فایل
/etc/passwdقابل دسترسی نباشد یا اطلاعات محدودی داشته باشد.
دقت کنید که بهجای اجرای دستور ! بهتنهایی، آن را بهعنوان پیشوند برای یک دستور شل محلی استفاده کردیم. این روش برای اجرای هر دستوری که روی ماشین محلی موجود است کار میکند و میتوانست قبلاً هم همراه با دستور محلی df استفاده شود.
UID در ستون سوم فایل قرار دارد؛ همانطور که با کاراکترهای دونقطه (:) جدا شده است.
بهطور مشابه، میتوانیم مالک گروه یک فایل را با این دستور تغییر دهیم:
chgrp groupID file
باز هم راه داخلی برای گرفتن فهرست گروههای سیستم ریموت وجود ندارد. میتوانیم با دستور زیر این مشکل را حل کنیم:
get /etc/group
!less group
خروجی:
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 بهطور عادی روی سیستم فایل ریموت کار میکند. مثلاً برای اعمال مجوزهای استاندارد خواندن و اجرا:
chmod 755 publicFile
خروجی:
Changing mode on /home/demouser/publicFile
دستور معادلی برای دستکاری مجوزهای فایل محلی وجود ندارد، اما میتوانید umask محلی را تنظیم کنید تا فایلهایی که به سیستم محلی کپی میشوند، مجوزهای متناظرشان را داشته باشند.
این کار با دستور lumask انجام میشود:
lumask 022
خروجی:
Local umask: 022
حالا همه فایلهای معمولی دانلودشده (تا زمانی که از فلگ -p استفاده نشود) مجوز 644 خواهند داشت.
SFTP همچنین به شما اجازه میدهد روی هر دو سیستم محلی و ریموت دایرکتوری بسازید؛ با lmkdir و mkdir بهترتیب.
بقیه دستورات فایل، فقط سیستم فایل ریموت را هدف میگیرند:
lnrmrmdir
این دستورات رفتار اصلی نسخههای شل خود را بازتولید میکنند. اگر لازم است این کارها را روی سیستم فایل محلی انجام دهید، یادتان باشد که میتوانید با اجرای این دستور به یک شل بروید:
!
یا یک دستور واحد را روی سیستم محلی با گذاشتن ! قبل از دستور اجرا کنید؛ مثل این:
!chmod 644 somefile
وقتی با نشست SFTPتان کارتان تمام شد، از exit یا bye برای بستن اتصال استفاده کنید.
bye
استفاده از SFTP در توزیعهای مختلف لینوکس
SFTP را میتوان در توزیعهای مختلف لینوکس استفاده کرد؛ با چند تفاوت در مراحل راهاندازی:
اوبونتو / دبیان
# نصب سرور OpenSSH
sudo apt update
sudo apt install openssh-server
# پیکربندی SFTP در sshd_config
sudo nano /etc/ssh/sshd_config
# مطمئن شوید این خط کامنت نیست:
# Subsystem sftp /usr/lib/openssh/sftp-server
# ریاستارت سرویس SSH
sudo systemctl restart ssh
سنتاواس / RHEL
# نصب سرور OpenSSH
sudo dnf install openssh-server
# پیکربندی SFTP
sudo vi /etc/ssh/sshd_config
# مطمئن شوید این خط کامنت نیست:
# Subsystem sftp /usr/libexec/openssh/sftp-server
# راهاندازی و فعالسازی سرویس SSH
sudo systemctl start sshd
sudo systemctl enable sshd
فدورا
# نصب سرور OpenSSH
sudo dnf install openssh-server
# پیکربندی SFTP
sudo nano /etc/ssh/sshd_config
# مطمئن شوید زیرسیستم SFTP فعال است
# ریاستارت سرویس SSH
sudo systemctl restart sshd
مطمئن شوید سرویس SSH روی همه توزیعها در حال اجراست؛ چون SFTP برای انتقال امن فایل به آن وابسته است.
راهاندازی یک سرور پایه SFTP
- نصب سرور SSH: روی اوبونتو از
sudo apt install openssh-serverو روی سنتاواس ازsudo dnf install openssh-serverاستفاده کنید. - پیکربندی SSH برای SFTP: فایل
/etc/ssh/sshd_configرا ویرایش کنید تا اتصالات SFTP مجاز شوند. خطSubsystem sftp /usr/lib/openssh/sftp-serverرا اضافه یا از کامنت دربیاورید. - ریاستارت سرویس SSH: تغییرات را با ریاستارت سرویس SSH با
sudo systemctl restart sshdاعمال کنید. - ساخت کاربر SFTP: با
adduser sftpuserیک کاربر اضافه کنید و یک دایرکتوری مشخص به او اختصاص دهید. توجه کنید که محدود کردن این کاربر صرفاً به دسترسی SFTP، پیکربندی اضافی SSH لازم دارد؛ مانند استفاده ازChrootDirectoryدر فایل پیکربندی SSH.
یکپارچهسازی SFTP در پایپلاینهای CI/CD
یکپارچهسازی SFTP با پایپلاینهای CI/CD امکان دیپلوی امن فایلها به سرورهای ریموت را فراهم میکند. از ابزارهایی مانند Jenkins یا GitLab CI/CD بههمراه پلاگینها یا اسکریپتهایی که از SFTP پشتیبانی میکنند برای خودکارسازی انتقال فایلها استفاده کنید. هنگام یکپارچهسازی SFTP در پایپلاینهای CI/CD، از احراز هویت مبتنی بر کلید SSH استفاده کنید و ورود با رمز عبور را غیرفعال کنید تا از پرامپتهای تعاملی جلوگیری شود.
خطاهای رایج و دیباگ
خطای Permission Denied هنگام آپلود
هنگام تلاش برای آپلود فایلها از طریق SFTP، ممکن است با خطای Permission Denied مواجه شوید. این خطا وقتی رخ میدهد که کاربر مجوزهای لازم برای نوشتن در دایرکتوری هدف روی سرور ریموت را نداشته باشد. برای رفع این مشکل، باید مجوزها و مالکیت دایرکتوری هدف را تنظیم کنید.
راهحل:
- بررسی مجوزها: با دستور
ls -ldمجوزهای فعلی دایرکتوری هدف را بررسی کنید. مثلاً:ls -ld /path/to/directory - تغییر مالکیت: با دستور
chownمالکیت دایرکتوری را به کاربری تغییر دهید که نیاز به آپلود فایل دارد. مثلاً:sudo chown user:group /path/to/directory - تنظیم مجوزها: با دستور
chmodمجوزهای دایرکتوری را برای اجازه نوشتن تنظیم کنید. مثلاً:sudo chmod 755 /path/to/directory
خطای Connection Refused یا Timed Out
خطای Connection Refused یا Timed Out هنگام تلاش برای اتصال به سرور SFTP میتواند رخ دهد. این خطا اغلب نشانه یک مشکل اتصال شبکه یا مشکلی در سرویس SSH روی سرور است.
راهحل:
- بررسی سرویس SSH: مطمئن شوید سرویس SSH روی سرور در حال اجراست. این کار را با
sudo systemctl status sshd(روی سنتاواس/RHEL) یاsudo systemctl status ssh(روی اوبونتو) انجام دهید. - تأیید IP و پورت: دوباره بررسی کنید که آدرس IP و شماره پورت درست سرور SFTP را استفاده میکنید.
- تشخیص شبکه: با
pingاتصال شبکه به سرور را تأیید کنید. مثلاً:ping server_ip. اگر ping شکست خورد، باtelnetاتصال به پورت SSH (معمولاً 22) را تست کنید. مثلاً:telnet server_ip 22
خطای Host Key Verification Failed
خطای Host Key Verification Failed وقتی رخ میدهد که فایل known hosts کلاینت شامل یک کلید هاست قدیمی یا نادرست برای سرور SFTP باشد.
راهحل:
- حذف کلید هاست قدیمی: فایل
~/.ssh/known_hostsرا باز کنید و خط حاوی کلید هاست قدیمی سرور SFTP را حذف کنید. - اتصال مجدد: دوباره به سرور SFTP وصل شوید. این کار باعث میشود کلاینت کلید هاست را در فایل
~/.ssh/known_hostsبهروزرسانی کند.
رفع خطای Command Not Found
خطای Command Not Found ممکن است وقتی رخ دهد که زیرسیستم SFTP بهدرستی روی سرور پیکربندی نشده باشد.
راهحل:
- بررسی پیکربندی SSH: مطمئن شوید زیرسیستم SFTP در فایل پیکربندی SSH فعال است. مثلاً روی سنتاواس/RHEL، فایل
/etc/ssh/sshd_configرا برای خطSubsystem sftp /usr/libexec/openssh/sftp-serverبررسی کنید. - تأیید مسیر: بررسی کنید که مسیر
sftp-serverدرست است و فایل وجود دارد.
خطاهای احراز هویت با کلید SSH
خطاهای احراز هویت کلید SSH ممکن است وقتی رخ دهند که کلید عمومی بهدرستی قرار نگرفته یا مجوزهای اشتباهی روی سرور دارد.
راهحل:
- بررسی authorized_keys: مطمئن شوید کلید عمومی بهدرستی در فایل
~/.ssh/authorized_keysسرور قرار گرفته است. - مجوزها: مطمئن شوید دایرکتوری
~/.sshمجوز 700 و فایلauthorized_keysمجوز 600 دارد. در صورت نیاز باchmodمجوزها را تنظیم کنید.
سوالات متداول
۱. SFTP چیست و چگونه کار میکند؟
SFTP یا پروتکل انتقال امن فایل، یک پروتکل امن برای انتقال فایل روی شبکه است. این پروتکل درون SSH (شل امن) ساخته شده و راهی امن برای دسترسی، مدیریت و انتقال فایل روی شبکه فراهم میکند. SFTP با برقراری یک اتصال امن بین کلاینت و سرور کار میکند و امکان انتقال فایل بین آنها را میدهد. این اتصال رمزنگاریشده است و تضمین میکند دادهها از دسترسی غیرمجاز محافظت شوند.
۲. چطور به یک سرور SFTP وصل شوم؟
برای اتصال به سرور SFTP، باید از یک کلاینت SFTP استفاده کنید. دستور اتصال به سرور SFTP مشابه SSH است:
sftp user@remote_server
بهجای user نام کاربری و بهجای remote_server نام هاست یا آدرس IP سروری را که میخواهید به آن وصل شوید قرار دهید. برای احراز هویت، از شما رمز عبور خواسته میشود.
۳. چطور با SFTP فایل آپلود کنم؟
برای آپلود فایل با SFTP، از دستور put استفاده کنید. سینتکس پایه این است:
put local_file remote_file
بهجای local_file مسیر فایلی را که میخواهید آپلود کنید و بهجای remote_file مسیری را که میخواهید فایل روی سرور ریموت آپلود شود قرار دهید.
۴. آیا میتوانم انتقال فایل با SFTP را خودکار کنم؟
بله، میتوانید انتقال فایل با SFTP را با اسکریپتها یا ابزارهایی که از SFTP پشتیبانی میکنند خودکار کنید. مثلاً میتوانید از ابزاری مثل lftp برای خودکارسازی انتقال فایلها استفاده کنید. همچنین میتوانید از زبانهای اسکریپتنویسی مثل پایتون یا Bash برای خودکارسازی انتقالهای SFTP بهره ببرید.
۵. تفاوت SFTP با FTP و SCP چیست؟
SFTP با FTP (پروتکل انتقال فایل) در این تفاوت دارد که یک اتصال امن برای انتقال فایل فراهم میکند، در حالی که FTP دادههای در حال انتقال را رمزنگاری نمیکند. SFTP با SCP (کپی امن) هم متفاوت است؛ SCP برای کپی کردن فایل بین هاستهای یک شبکه طراحی شده، در حالی که SFTP مجموعه جامعتری از قابلیتهای مدیریت فایل ارائه میدهد؛ مانند امکان فهرست کردن دایرکتوریها، حذف فایلها و ساخت دایرکتوریها.
۶. SFTP بهطور پیشفرض از چه پورتی استفاده میکند؟
SFTP بهصورت پیشفرض از پورت 22 استفاده میکند؛ همان پورتی که SSH از آن استفاده میکند.
۷. چطور خطاهای مجوز SFTP را رفع کنم؟
برای رفع خطاهای مجوز SFTP، باید مطمئن شوید کاربر مجوزهای لازم برای خواندن یا نوشتن فایلها روی سرور ریموت را دارد. این ممکن است شامل تغییر مالکیت یا مجوزهای فایلها یا دایرکتوریهای مربوطه باشد. میتوانید از دستورات chown و chmod برای تغییر مالکیت و مجوزها استفاده کنید. مثلاً دستورات زیر را در شل سرور اجرا کنید (نه داخل پرامپت SFTP):
chown user:group file
chmod 755 file
بهجای user و group مالکیت مورد نظر و بهجای file مسیر فایلی را که میخواهید تغییر دهید قرار دهید.
نتیجهگیری
هرچند سینتکس SFTP به اندازه ابزارهای شل مدرن جامع نیست، اما میتواند برای فراهم کردن سازگاری با سینتکس FTP قدیمی یا برای محدود کردن دقیق عملکرد در دسترس کاربران ریموتِ برخی محیطها مفید باشد.
مثلاً میتوانید از SFTP استفاده کنید تا به کاربران خاصی اجازه دهید بدون دسترسی SSH فایل منتقل کنند. برای اطلاعات بیشتر درباره این روش، آموزش «نحوه فعالسازی SFTP بدون دسترسی شل» را در پارمین کلود ببینید.
اگر به استفاده از FTP یا SCP برای انتقالهایتان عادت دارید، SFTP راه خوبی برای بهرهگیری از قوتهای هر دو است. هرچند برای هر موقعیتی مناسب نیست، اما ابزاری انعطافپذیر در جعبهابزار شماست.




