نحوه استفاده از SSHFS برای Mount کردن سیستمفایل سرور مجازی از طریق SSH
۲۶ دی ۱۴۰۳
مقدمه
انتقال فایلها از طریق اتصال SSH با استفاده از SFTP یا SCP، یکی از روشهای محبوب برای انتقال حجم کمی از دادهها بین سرورها است. با این حال، در برخی موارد، ممکن است نیاز به اشتراکگذاری کل دایرکتوریها یا سیستمهای فایل کامل بین دو محیط سرور مجازی داشته باشید. اگرچه این کار با پیکربندی یک SMB یا NFS mount قابل انجام است، اما هر دو نیاز به وابستگیهای اضافی دارند و ممکن است نگرانیهای امنیتی یا سربار دیگری ایجاد کنند.
به عنوان یک جایگزین خوب، میتوانید SSHFS را نصب کنید تا تنها با استفاده از SSH، یک دایرکتوری در سرور مجازی را mount کنید. این روش مزیت قابل توجهی دارد، زیرا نیازی به پیکربندی اضافی ندارد و از مجوزهای کاربر SSH روی سیستم ریموت، تبعیت میکند. SSHFS زمانی مفید است که نیاز به خواندن مجموعه بزرگی از فایلها به صورت تعاملی و جداگانه داشته باشید.
پیشنیازها
برای درک بهتر این مقاله، به دو سرور مجازی لینوکس (پیکربندیشده برای دسترسی SSH)، نیاز خواهید داشت. یکی از این سرورها میتواند سیستم کامپیوتریتان باشد و نیازی نیست حتماً سرور ابری باشد. در صورتی که سرور لینوکس سیستم کامپیوتری شما، پیکربندی نشده است؛ میتوانید این مقاله را مطالعه کنید: نحوه راهاندازی اولیه سرور مجازی با اوبونتو Ubuntu
همچنین؛ در صورتی که با مفهوم SSH و سرور مجازی آشنایی کافی ندارید، بهتر است در ابتدا، به مطالعه مقالههای زیر، بپردازید:
- سرور مجازی یا VPS چیست؟ انواع و کاربرد
- SSH چیست؟ + نحوه استفاده از SSH برای اتصال به سرور مجازی (VPS)
در ادامه، بخوانید:
- مرحله اول – نصب 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 برای mountfuse.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های ایران، با ساختار مناسب و مقیاسپذیر، این امکان را به شما میدهد تا به راحتی هرچه تمام، تنظیمات خود را در سرور مجازی اختصاصیتان (با منابع اختصاصی)، اعمال کنید و به توسعه برنامههای خود، بپردازید.