سرورلینوکس

آموزش استفاده از SFTP برای انتقال امن فایل‌ها با سرور ریموت

مقدمه

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 به‌ترتیب.

بقیه دستورات فایل، فقط سیستم فایل ریموت را هدف می‌گیرند:

  • ln
  • rm
  • rmdir

این دستورات رفتار اصلی نسخه‌های شل خود را بازتولید می‌کنند. اگر لازم است این کارها را روی سیستم فایل محلی انجام دهید، یادتان باشد که می‌توانید با اجرای این دستور به یک شل بروید:

!

یا یک دستور واحد را روی سیستم محلی با گذاشتن ! قبل از دستور اجرا کنید؛ مثل این:

!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

  1. نصب سرور SSH: روی اوبونتو از sudo apt install openssh-server و روی سنت‌او‌اس از sudo dnf install openssh-server استفاده کنید.
  2. پیکربندی SSH برای SFTP: فایل /etc/ssh/sshd_config را ویرایش کنید تا اتصالات SFTP مجاز شوند. خط Subsystem sftp /usr/lib/openssh/sftp-server را اضافه یا از کامنت دربیاورید.
  3. ری‌استارت سرویس SSH: تغییرات را با ری‌استارت سرویس SSH با sudo systemctl restart sshd اعمال کنید.
  4. ساخت کاربر 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 راه خوبی برای بهره‌گیری از قوت‌های هر دو است. هرچند برای هر موقعیتی مناسب نیست، اما ابزاری انعطاف‌پذیر در جعبه‌ابزار شماست.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا