جدول محتوایی

سرور SFTP چیست؟

SFTP مخفف SSH File Transfer Protocol است. در واقع یک نسخه FTP است که از SSH استفاده می کند. SFTP به کاربران اجازه می دهد تا فایل ها را از طریق یک اتصال رمزگذاری شده به سرور لینوکس آپلود و دانلود کنند. FTP بدون رمزگذاری همین کار را انجام می دهد و به همین دلیل است که SFTP امروزه بر FTP ترجیح داده می شود.

حالا وقت این است که ببینیم چگونه می توانید یک سرور SFTP را در یک سیستم لینوکس راه اندازی کنید.

راه اندازی سرور SFTP در لینوکس

ما در این آموزش از اوبونتو استفاده میکنیم. دستورات نصب مختص اوبونتو و دبیان هستند اما بقیه مراحل را می توان در هر توزیع لینوکس دیگری دنبال کرد.

برای اینکه بهتر این آموزش را متوجه شوید، بهتر است که یک سرور مجازی اوبونتو داشته باشید. برای خرید سرور مجازی میتوانید با کلیک روی بنر زیر، پلن های ما را مشاهده کنید.

جهت انجام مراحل، باید امتیازات sudo داشته باشید. بنابراین اگر حقوق sudo را ندارید، با سرپرست سیستم خود تماس بگیرید. اگر شما هستید، لطفاً در مورد ایجاد کاربر sudo در اوبونتو مطالعه کنید.

راه اندازی SFTP بسیار آسان است. قبل از رفتن به آن، باید OpenSSH را در سمت سرور و SSH را در سیستم کلاینت نصب کنید.

برای نصب OpenSSH در سرور می توانید از دستور زیر استفاده کنید:

sudo apt install openssh-server

 

شما همچنین به SSH در سیستمی نیاز دارید که از آنجا به سرور SFTP دسترسی خواهید داشت.

sudo apt install ssh

 

پس از انجام این کار، همه چیز را برای راه اندازی SFTP آماده خواهید کرد. این در سه مرحله انجام می شود و من می خواهم آن را یک به یک به شما نشان دهم.

 

 

مرحله 1: ایجاد گروه ها، کاربران و دایرکتوری ها

برای استفاده ایمن از سرور SFTP (یا به طور کلی هر سرویس دیگری)، بهتر است گروه ها و کاربرانی ایجاد کنید تا از آن سرویس و فقط آن سرویس استفاده کنند.

در صورتی که می خواهید دسترسی SFTP و همچنین دسترسی عادی به سیستم را بدهید، کاربرانی را ایجاد کنید که شناسایی آنها بر اساس سرویس آسان باشد. به عنوان مثال، اگر seeni برای دسترسی به سیستم معمولی استفاده می شود، seeisftp می تواند برای دسترسی SFTP استفاده شود. استفاده از این روش در سمت مدیریت آسان تر خواهد بود.

با استفاده از دستور groupadd یک گروه به نام “sftpg” ایجاد میکنیم:

sudo groupadd sftpg

 

با دستور زیر یک کاربر به نام “seenisftp” میسازیم و او را به گروه بالا اضافه کنیم و به او رمز عبور اختصاص میدهیم.

sudo useradd -g sftpg seenisftp 
sudo passwd seenisftp

 

در دستور useradd گزینه -g به گروه می گوید که به کدام کاربر باید اضافه شود. می توانید همه کاربران را در لینوکس لیست کنید و بررسی کنید که کاربر جدید اضافه شده است یا نه.

فرض کنید می خواهید از دایرکتوری /data/ به عنوان روت برای sftp و /data/USERNAME برای هر کاربر استفاده کنید. بنابراین وقتی کاربران از طریق sftp وارد می‌شوند، باید در /data/USERNAME به‌عنوان دایرکتوری پیش‌فرض خود باشند (همانطور که وقتی از طریق SSH وارد سیستم لینوکس می‌شوید، در فهرست /home/USERNAME هستید). همچنین، محدودیتی را در نظر بگیرید که آنها می توانند فایل ها را از آن دایرکتوری بخوانند اما می توانند فقط در پوشه آپلودها آپلود کنند.

حالا دایرکتوری ها را ایجاد میکنیم و دسترسی و مالکیت آنها را به صورت زیر تغییر دهیم.

sudo mkdir -p /data/seenisftp/upload
sudo chown -R root.sftpg /data/seenisftp
sudo chown -R seenisftp.sftpg /data/seenisftp/upload

 

یکی از مواردی که ممکن است باعث سردرگمی شود، دادن مالکیت دایرکتوری کاربر به خود root است. این برای chrooting در SFTP اجباری است. بنابراین مطمئن شوید که مالک /data/USERNAME ریشه است.

در حال حاضر، ما کاربری به نام seeisftp با گروه sftpg و با مجوزهای دسترسی برای /data/seenisftp داریم.

 

مرحله 2: پیکربندی sshd_config

در مرحله بعد باید سرور ssh را پیکربندی کنید تا زمانی که کاربر متعلق به گروه sftpg وارد سیستم می شود، به جای ترمینال معمولی که از طریق ssh دریافت می کنید، وارد sftp شود. اگر از قبل موجود نیست، قطعه کد زیر را با استفاده از یک ویرایشگر متن به فایل /etc/ssh/sshd_config اضافه کنید.

Match Group sftpg
        ChrootDirectory /data/%u
        ForceCommand internal-sftp

در قطعه بالا، ChrootDirectory اجازه می دهد تا دایرکتوری مشخص شده به عنوان گره روت (“/” دایرکتوری ) در دایرکتوری ساخته شود. کاربر وارد شده نمی تواند چیزی بالای آن دایرکتوری را ببیند. بنابراین دسترسی کاربر فعلی به فایل های کاربر دیگر از طریق sftp را متوقف می کند. %u کد فرار برای پر کردن آن با نام کاربری فعلی در زمان ورود است. هنگامی که seeisftp از طریق sftp وارد می شود، در /data/seenisftp به عنوان دایرکتوری روت خود قرار می گیرد.

 

مرحله 3: راه اندازی مجدد سرویس

برای ایجاد تغییراتی که در sshd_config live ایجاد کردیم، سرویس را به صورت زیر راه اندازی مجدد کنید.

sudo systemctl restart sshd

 

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

همانطور که معمولاً با SSH انجام می دهید می توانید وارد SFTP شوید.

sftp [email protected]

 

نمونه دستورات سرور SFTP

دستورات SFTP معمولاً از فرمت زیر هستند.

COMMAND [SOURCE] [DESTINATION]

برای هر دستوری، آرگومان ها ممکن است مسیرهای سیستم محلی یا مسیرهای سیستم از راه دور باشند. هیچ تمایز قابل مشاهده خاصی بین آنها وجود ندارد. پس از بررسی محلی یا راه دور بودن آرگومان می توانید مسیر را به صورت عادی مشخص کنید.

GET – محتویات را از سرور راه دور به سیستم محلی دانلود کنید. دستور زیر فایل راه دور poster.img را در دایرکتوری ~/Pictures سیستم محلی دانلود می کند.

GET poster.img ~/Pictures

 

PUT – آپلود مطالب از سیستم محلی به سیستم راه دور. دستور زیر ~/Pictures/poster2.jpg را در فهرست آپلودهای من آپلود می کند.

PUT ~/Pictures/poster2.jpg uploads/

 

RM – برای حذف فایل ها در سیستم راه دور. این بسیار شبیه دستور rm است. می توانید آن را از دستور زیر مشاهده کنید که یک تصویر را در uploads/poster3.jpg حذف می کند.

RM uploads/poster3.jpg

 

دستورات فوق بسیار ابتدایی هستند و برای بررسی سرور FTP/SFTP کافی هستند. اگر می خواهید بیشتر بدانید، یا از دستور help استفاده کنید یا از این منبع استفاده کنید.

امیدوارم این مقاله به شما در راه اندازی سرور SFTP در لینوکس کمک کرده باشد. اگر این مقاله برای شما مفید بود، آن را با دوستان خود به اشتراک بگذارید.

 

17رای - امتیاز 4.8 ممنون از امتیازی که دادید..!

دسته بندی شده در: