مقدمه
انتقال فایل از طریق SSH با ابزارهایی مثل SCP و SFTP روش رایجی برای جابهجایی فایلهای کوچک بین سرورهاست. اما وقتی پای دایرکتوریهای بزرگ یا کل فایلسیستم وسط باشد، این روشها دیگر جواب نمیدهند. راهکارهایی مثل NFS یا SMB وجود دارند، اما معمولا نیاز به تنظیمات اضافی دارند و از نظر امنیت و نگهداری دردسرساز میشوند.
SSHFS بر پایه پروتکل SSH کار میکند؛ برای آشنایی بیشتر میتوانید آموزش اتصال به سرور ریموت با SSH را مطالعه کنید.
اینجاست که SSHFS وارد میشود. SSHFS به شما اجازه میدهد یک دایرکتوری ریموت را فقط با SSH مانت کنید، بدون نیاز به تنظیمات سمت سرور. مجوزها مستقیما از کاربر SSH به ارث میرسند و همهچیز رمزنگاریشده باقی میماند.
در دنیای امروز، مخصوصا در پروژههای هوش مصنوعی، یادگیری ماشین و دیتا ساینس، SSHFS به ابزاری حیاتی تبدیل شده؛ چون امکان دسترسی مستقیم به دیتاستهای بزرگ روی سرورهای GPU یا دیتا سرورها را بدون کپی محلی فراهم میکند.
در این آموزش جامع از دیدگاه، از نصب SSHFS شروع میکنیم و تا تنظیمات پیشرفته، بهینهسازی عملکرد، مانت دائمی و استفاده در پروژههای AI/ML جلو میرویم.
نکات کلیدی
-
امنیت بالا: استفاده از رمزنگاری SSH بدون تنظیمات اضافه
-
چندسکویی: لینوکس، مک و ویندوز (با FUSE)
-
مناسب AI/ML: دسترسی مستقیم به دیتاستهای حجیم
-
بهینهسازی عملکرد: کش، فشردهسازی و reconnect
-
آماده محیط تولید: پشتیبانی از systemd و مانت دائمی
پیشنیازها
-
دسترسی SSH بین دو سیستم
-
دسترسی نصب نرمافزار و مانت فایلسیستم
-
اتصال شبکه پایدار
-
احراز هویت با کلید SSH (پیشنهادی برای محیط تولید)
-
فعال بودن FUSE روی سیستم
برای اتصال بدون نیاز به وارد کردن مکرر رمز عبور، بهتر است ابتدا SSH Key را در سرور خود راهاندازی کنید.
مرحله ۱: نصب SSHFS
اوبونتو / دبیان
sudo apt update
sudo apt install sshfs fuse3RHEL / CentOS / Fedora
sudo dnf install sshfs fuse-sshfsArch Linux
sudo pacman -S sshfsmacOS
brew install --cask macfuse
brew install gromgull/fuse/sshfs-macویندوز
-
نصب WinFsp
-
نصب SSHFS-Win
بررسی نصب
sshfs --versionمرحله ۲: مانت کردن فایلسیستم ریموت
ساخت مسیر مانت
sudo mkdir /mnt/remote_dataمانت ساده
sudo sshfs user@server:/path /mnt/remote_dataمانت بهینه برای AI / ML
sudo sshfs -o compression=yes,cache=yes,auto_cache,reconnect \
user@gpu_server:/datasets /mnt/ml_datasetsگزینههای مهم
-
compression=yesکاهش مصرف پهنای باند -
cache=yesافزایش سرعت دسترسی -
reconnectاتصال مجدد خودکار -
ServerAliveIntervalجلوگیری از قطع اتصال
مرحله ۳: مانت دائمی (Permanent Mount)
روش کلاسیک با fstab
فایل /etc/fstab را ویرایش کنید:
user@server:/data /mnt/data fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/user/.ssh/id_rsa,allow_other,default_permissions 0 0روش مدرن با systemd (پیشنهادی)
ساخت فایل:
/etc/systemd/system/mnt-data.mountو فعالسازی:
sudo systemctl enable mnt-data.automount
sudo systemctl start mnt-data.automountبررسی و رفع خطا
-
تست اتصال SSH:
ssh user@server-
بررسی مانت:
mount | grep sshfs-
لاگ systemd:
journalctl -u mnt-data.mountبهینهسازی عملکرد برای پروژههای AI/ML
کش تهاجمی برای دیتاستهای بزرگ
sshfs -o cache=yes,auto_cache,entry_timeout=7200,attr_timeout=7200 \
user@server:/datasets /mnt/datasetsبهینه برای اینترنت ضعیف
sshfs -o compression=yes,compression_level=9 \
user@server:/data /mnt/dataاستفاده در پروژههای یادگیری ماشین
مثال TensorFlow
dataset = tf.keras.preprocessing.image_dataset_from_directory(
'/mnt/imagenet/train',
image_size=(224, 224),
batch_size=32
)بدون کپی دیتا، بدون دردسر. مدل خوشحال، شما هم.
سوالات متداول
SSHFS چه مزیتی نسبت به SCP دارد؟
دسترسی بلادرنگ، بدون دانلود/آپلود مداوم، مناسب دیتاستهای حجیم.
روی مک و ویندوز هم جواب میدهد؟
بله، ولی لینوکس همچنان بهترین عملکرد را دارد.
اگر unmount نکنم چه میشود؟
ریسک خراب شدن داده، هنگ سیستم، و قطع ناقص ارتباط. همیشه unmount کن.
جمعبندی
SSHFS ابزاری ساده اما قدرتمند برای دسترسی امن به فایلسیستمهای ریموت است. چه توسعهدهنده باشید، چه مدیر سرور، چه مشغول آموزش مدلهای سنگین AI، SSHFS میتواند سرعت کارتان را بالا ببرد و دردسر انتقال فایل را حذف کند.
در دیدگاه همیشه توصیه ما این است:
ابزار سادهای که درست تنظیم شده، از پیچیدهترین راهکارها هم بهتر کار میکند.
اگر خواستی نسخه سئوشده، کوتاهتر یا مخصوص وردپرس هم از این متن دربیارم، میدونم چطور.
اگر تنها نیاز به انتقال فایل بهصورت موردی دارید نه مانت دائمی، آموزش استفاده از SFTP نیز میتواند گزینه مناسبی باشد.
