منو سایت

  • خانه
  • وبلاگ
  • نحوه استفاده از SFTP برای انتقال ایمن فایل ها به سرور راه دور را بیاموزید

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

 تاریخ انتشار :
/
  وبلاگ
مدیریت کاربران MySQL

پروتکل انتقال فایل (به اختصار 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 وصل شوم؟

از 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

 

ناوبری 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

انتقال فایل ها با 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 به شما امکان می دهد فایل های ذخیره شده سیستم را اجرا کنید. به عنوان مثال، می توانید با استفاده از خط زیر مالک یک فایل را در سیستم راه دور تغییر دهید:

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 برای انتقال ایمن فایل ها به سرور راه دور اولین بار در پارس پک. به نظر می رسد.