تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

    نحوه استفاده از SSHFS برای Mount کردن سیستم‌فایل سرور مجازی از طریق SSH


    ۲۶ دی ۱۴۰۳

    مقدمه

    انتقال فایل‌ها از طریق اتصال SSH با استفاده از SFTP یا SCP، یکی از روش‌های محبوب برای انتقال حجم کمی از داده‌ها بین سرورها است. با این حال، در برخی موارد، ممکن است نیاز به اشتراک‌گذاری کل دایرکتوری‌ها یا سیستم‌های فایل کامل بین دو محیط سرور مجازی داشته باشید. اگرچه این کار با پیکربندی یک SMB یا NFS mount قابل انجام است، اما هر دو نیاز به وابستگی‌های اضافی دارند و ممکن است نگرانی‌های امنیتی یا سربار دیگری ایجاد کنند.

    به عنوان یک جایگزین خوب، می‌توانید SSHFS را نصب کنید تا تنها با استفاده از SSH، یک دایرکتوری در سرور مجازی را mount کنید. این روش مزیت قابل توجهی دارد، زیرا نیازی به پیکربندی اضافی ندارد و از مجوزهای کاربر SSH روی سیستم ریموت، تبعیت می‌کند. SSHFS زمانی مفید است که نیاز به خواندن مجموعه بزرگی از فایل‌ها به صورت تعاملی و جداگانه داشته باشید.

    پیش‌نیازها

    برای درک بهتر این مقاله، به دو سرور مجازی لینوکس (پیکربندی‌شده برای دسترسی SSH)، نیاز خواهید داشت. یکی از این سرورها می‌تواند سیستم کامپیوتری‌تان باشد و نیازی نیست حتماً سرور ابری باشد. در صورتی که سرور لینوکس سیستم کامپیوتری شما، پیکربندی نشده است؛ می‌توانید این مقاله را مطالعه کنید: نحوه راه‌اندازی اولیه سرور مجازی با اوبونتو Ubuntu

    همچنین؛ در صورتی که با مفهوم SSH و سرور مجازی آشنایی کافی ندارید، بهتر است در ابتدا، به مطالعه مقاله‎‌های زیر، بپردازید:

    در ادامه، بخوانید:

    • مرحله اول – نصب SSHFS
    • مرحله دوم – نحوه mount کردن فایل‌سیستم ریموت
    • مرحله سوم – نحوه mount کردن دائمی فایل سیستم ریموت
    • نتیجه‌گیری

    مرحله اول – نصب SSHFS

    SSHFS برای بیشتر توزیع‌های لینوکس در دسترس است. در Ubuntu می‌توانید آن را با استفاده از دستور apt نصب کنید. ابتدا از دستور زیر برای به‌روزرسانی repositoryهای پکیج‌ها استفاده کنید:

    sudo apt update

    سپس با دستور زیر، پکیج sshfs را نصب کنید:

    sudo apt install sshfs

    توجه: SSHFS را می‌توان در سیستم‌های Mac یا Windows نیز از طریق کتابخانه‌‌ای نام FUSE نصب کرد. این کتابخانه امکان تعامل با محیط‌های لینوکسی را فراهم می‌کند. مفاهیم و جزئیات اتصال، مشابه این آموزش خواهند بود، اما ممکن است نیاز به استفاده از پیکربندی متفاوت یا نصب کتابخانه‌های ثالث داشته باشید.

    این آموزش فقط به SSHFS در Linux می‌پردازد، اما می‌توانید این مراحل را برای پیاده‌سازی‌های FUSE در Mac یا Windows تطبیق دهید. برای نصب SSHFS در Windows می‌توانید از این ریپازیتوری GitHub و برای نصب SSHFS در Mac می‌توانید از macFUSE استفاده کنید.

    مرحله دوم – نحوه mount کردن فایل‌سیستم ریموت

    هنگام mount کردن یک فایل‌سیستم ریموت در محیط لینوکس، ابتدا نیاز به یک دایرکتوری خالی دارید تا فایل‌سیستم را در آن mount کنید. بیشتر محیط‌های لینوکسی شامل دایرکتوری‌ای به نام /mnt هستند که می‌توانید در آن یک دایرکتوری برای این منظور ایجاد کنید.

    توجه: در Windows، فایل‌سیستم‌های ریموت، گاهی با یک حرف درایو مانند G: مونت می‌شوند و در Mac معمولاً در دایرکتوری /Volumes قرار می‌گیرند.

    یک دایرکتوری در /mnt با نام droplet با استفاده از دستور mkdir ایجاد کنید:

    sudo mkdir /mnt/droplet

    اکنون می‌توانید یک دایرکتوری ریموت را با استفاده از sshfs مونت کنید:

    sudo sshfs -o allow_other,default_permissions lorem@your_other_server:~/ /mnt/droplet

    در ادامه، پارامترهای مختلف دستور فوق، توضیح داده شده است:

    • -o: این گزینه شامل تنظیمات مختلف mount است (مشابه اجرای دستور mount برای دیسک‌های غیر SSH). در اینجا از allow_other استفاده می‌شود تا به کاربران دیگر اجازه دسترسی به این mount را بدهیم (تا مانند مونت یک دیسک معمولی کار کند. دستور sshfs به صورت پیش‌فرض، این اجازه را نمی‌دهد). و از default_permissions برای به‌کارگیری مجوزهای معمول فایل‌سیستم، استفاده می‌کنیم.
    • lorem@your_other_server:~/ مسیر کامل دایرکتوری سرور مجازی ریموت را مشخص می‌کند، از جمله نام کاربری ریموت (lorem)، آدرس سرور مجازی ریموت (your_other_server) و مسیر که در اینجا ~/ همان home directory کاربر ریموت است.
    • /mnt/droplet مسیر دایرکتوری در local است که به عنوان نقطه mount استفاده می‌شود.

    اگر با اجرای دستور فوق، پیامی مانند Connection reset by peer دریافت کردید، اطمینان حاصل کنید که کلید SSH خود را در سرور مجازی ریموت، از قبل، کپی کرده‌اید. sshfs از یک اتصال SSH عادی در پس‌زمینه استفاده می‌کند، و اگر اولین بار است که به سرور مجازی ریموت از طریق SSH متصل می‌شوید، ممکن است از شما خواسته شود تا fingerprint کلید سرور مجازی ریموت را، تایید کنید.

    The authenticity of host '164.90.133.64 (164.90.133.64)' can't be established.
    ED25519 key fingerprint is SHA256:05SYulMxeTDWFZtf3/ruDDm/3mmHkiTfAr+67FBC0+Q.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

    توجه: اگر نیاز دارید که یک دایرکتوری ریموت را بدون نیاز به مجوزهای sudo مونت کنید، می‌توانید یک گروه به نام fuse با استفاده از دستور sudo groupadd fuse روی ماشین local خود ایجاد کنید، سپس کاربر local خود را با استفاده از دستور sudo usermod -a -G fuse lorem به این گروه، اضافه کنید.

    برای بررسی محتویات دایرکتوری mount شده، می‌توانید از دستور ls استفاده کنید:

    ls /mnt/droplet

    حال می‌توانید با فایل‌های روی سرور ریموت، کار کنید به شکلی که انگار یک دستگاه فیزیکی به ماشین local شما متصل است. به‌عنوان مثال، اگر فایلی در دایرکتوری /mnt/droplet ایجاد کنید، آن فایل در سرور مجازی شما ظاهر خواهد شد. همچنین، می‌توانید فایل‌ها را درون این دایرکتوری بریزید یا فایلی را از آن، کپی کنید؛ با انجام این کار، به طور خودکار، فایل، درون سرور مجازی ریموت، آپلود یا دانلود، می‌شود.

    توجه داشته باشید که دستور mount، دیسک از راه دور را فقط برای ترمینال فعلی شما mount می‌کند؛ اگر سرور مجازی یا سیستم کامپیوتری‌تان خاموش یا ری‌استارت شود، باید از فرایند گفته شده، برای mount دوباره آن استفاده کنید. اگر دیگر به این mount نیازی ندارید، می‌توانید آن را با دستور umount جدا کنید:

    sudo umount /mnt/droplet

    مرحله سوم – نحوه mount کردن دائمی فایل سیستم ریموت

    همانند انواع دیگر mount‌های دیسک و شبکه، می‌توانید با استفاده از SSHFS یک mount دائمی تنظیم کنید. برای انجام این کار، باید یک‌سری پیکربندی به فایل /etc/fstab اضافه کنید که mount‌های فایل‌سیستم لینوکس را هنگام روشن شدن سرور، مدیریت می‌کند.

    با استفاده از nano یا ویرایشگر متن مورد علاقه‌تان، فایل /etc/fstab را باز کنید:

    sudo nano /etc/fstab

    در انتهای فایل فوق، قطعه کد زیر را اضافه کنید:

    …
    lorem@your_other_server:~/ /mnt/droplet fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/lorem/.ssh/id_rsa,allow_other,default_permissions 0 0

    در ادامه، پارامترهای مختلف قطعه کد فوق، توضیح داده شده است:

    • lorem@your_other_server:~/: مسیر دایرکتوری ریموت (مانند مثال‌های قبلی)
    • /mnt/droplet: مسیر دایرکتوری local برای mount
    • fuse.sshfs: درایور مورد استفاده برای mount دایرکتوری ریموت.
    • noauto,x-systemd.automount,_netdev,reconnect: مجموعه‌ای از گزینه‌ها که تضمین می‌کنند mount دائمی همواره برقرار باشد، حتی اگر اتصال شبکه قطع شود.
    • identityfile=/home/sammy/.ssh/id_rsa: مسیر کلید SSH در local برای mount خودکار دایرکتوری ریموت. این مثال فرض می‌کند که نام کاربری در سیستم کاربری‌تان و در سرور مجازی ریموت، هردو lorem هستند. انتخاب این مورد ضروری است، زیرا فایل /etc/fstab به‌صورت root اجرا می‌شود و نمی‌داند کدام کلید SSH را باید بررسی کند.
    • allow_other,default_permissions: همان گزینه‌های مجوز در مرحله دوم mount
    • 0 0: تعیین می‌کند که فایل‌سیستم ریموت، نباید در مواقع مواجهه با ارور یا به صورت کلی، توسط سیستم کامپیوتری‌تان، dump یا validate شود.

    فایل را ذخیره کرده و ببندید. اگر از nano استفاده می‌کنید، Ctrl+X را فشار دهید، در ادامه، وقتی از شما خواسته شد، Y و سپس ENTER را بزنید. حالا می‌توانید پیکربندی /etc/fstab را با راه‌اندازی مجدد ماشین local خود، آزمایش کنید، برای مثال با استفاده از دستور sudo reboot now اطمینان حاصل کنید که mount به‌طور خودکار، دوباره ایجاد می‌شود.

    توجه داشته باشید که mount دائمی معمولاً زیاد استفاده نمی‌شود. ماهیت اتصالات SSH و SSHFS به این معناست که بیشتر برای راه‌حل‌های موقتی استفاده شوند، مثلاً زمانی که نیازی به استفاده از یک SMB یا NFS mount که می‌تواند با پیکربندی‌های بیشتر و گزینه‌های اضافی ساخته شود، ندارید.

    با این حال، SSHFS بسیار انعطاف‌پذیر است و مهم‌تر از همه، به‌عنوان یک درایور کامل فایل‌سیستم عمل می‌کند که به شما این امکان را می‌دهد که آن را در /etc/fstab مانند هر disk mount دیگری پیکربندی کرده و هر زمانی که نیاز داشته باشید از آن استفاده کنید. مراقب باشید که به‌طور تصادفی بخش‌های بیشتری از سیستم فایل ریموت را از طریق SSH، به اشتراک نگذارید.

    نتیجه‌گیری

    در این آموزش، فایل‌سیستم یک سرور مجازی (VPS) را با استفاده از SSHFS، در سیستم کامپیوتر خودمان، mount کردیم. اگرچه SSHFS بهترین راه‌حل برای محیط‌های production با مقیاس‌پذیری و عملکرد بالا نیست، اما می‌تواند در برخی مواقع، بسیار کاربردی باشد.

    اگر که به یک سرور مجازی با قابلیت اعتمادپذیری بالا نیاز دارید، می‌توانید از سرور مجازی (VPS) لیارا، استفاده کنید. لیارا با ارائه یکی از بهترین VPSهای ایران، با ساختار مناسب و مقیاس‌پذیر، این امکان را به شما می‌دهد تا به راحتی هرچه تمام، تنظیمات خود را در سرور مجازی اختصاصی‌تان (با منابع اختصاصی)، اعمال کنید و به توسعه برنامه‌های خود، بپردازید.

    ســــــــــــــــــــــال‌هاست که هستیم

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

    sixth

    جمع‌مـــــــــــان، جمع است

    بیش از ۴۰ هزار توسعه‌دهنده و صاحبان کسب و کار در جمع ما هستند. جای شما خالی‌ست...

    usersnumberusers

    خدمات رایگان لیارا

    ۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

    ۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

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

    دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

    سرویس DNS رایگانسرویس DNS رایگان

    به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

    ۱۰۰ هزار تومان اعتبار اولیه۱۰۰ هزار تومان اعتبار اولیه

    بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

    ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماهارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

    در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید. (به‌همراه دسترسی SMTP)

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

    تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

    همراه شما هستیم

    در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
    تلفن واحد فروش:
    ۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
    call
    تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)