Mount thư mục từ xa bằng SSHFS: Code trực tiếp trên Server như ổ cứng Local

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Nỗi khổ khi “vật lộn” với file trên Server từ xa

Nếu đang quản lý server, chắc hẳn bạn đã quen với cảnh này: Một con VPS đặt tại Singapore với độ trễ (ping) tầm 50-70ms, và bạn cần sửa gấp hàng chục file cấu hình. Thông thường, anh em sẽ dùng vi hoặc nano trực tiếp trên terminal. Cách khác là dùng FileZilla tải file về, sửa xong lại upload ngược lên.

Lối cũ dùng terminal khá gò bó. Bạn không thể tận dụng sức mạnh của các IDE như VS Code để refactor code nhanh được. Còn dùng FTP? Cực kỳ mất thời gian. Trên con server production Ubuntu 22.04 mình quản lý, việc upload/download thủ công gây lãng phí khoảng 20-30 phút mỗi khi debug, chưa kể rủi ro ghi đè nhầm phiên bản cũ.

Tại sao các phương pháp truyền thống lại gây ức chế?

Vấn đề nằm ở sự rời rạc. Khi dùng scp hay rsync, mỗi lần sửa một dấu phẩy, bạn lại phải gõ lệnh để đẩy file lên. Thao tác này lặp đi lặp lại hàng trăm lần một ngày sẽ gây mệt mỏi cực độ.

Dùng NFS hay Samba thì sao? Chúng quá phức tạp để cấu hình qua Internet. Bạn sẽ phải mở nhiều port trên Firewall, vô tình tạo ra các lỗ hổng bảo mật nguy hiểm. Bạn cần một thứ gì đó vừa an toàn như SSH, vừa tiện như một chiếc ổ cứng cắm ngoài.

So sánh nhanh các giải pháp phổ biến

  • SCP/SFTP: Chậm vì phải truyền tải từng file riêng biệt, không hỗ trợ mở file trực tiếp.
  • NFS/Samba: Tốc độ tốt nhưng cấu hình cực hình, đòi hỏi VPN để đảm bảo an toàn.
  • Rsync: Phù hợp để backup định kỳ hơn là làm việc thời gian thực (real-time).

SSHFS – Biến thư mục Server thành ổ đĩa máy nhà

SSHFS (SSH Filesystem) là giải pháp thay đổi hoàn toàn cuộc chơi. Công cụ này dựa trên FUSE (Filesystem in Userspace), cho phép bạn mount thư mục từ server vào máy local qua cổng SSH (mặc định là 22).

Sau khi mount, thư mục server sẽ hiện ra như một ổ đĩa bình thường. Bạn có thể dùng VS Code mở nó lên, nhấn Ctrl+S để lưu, và file trên server lập tức được cập nhật. Không cần upload, không cần chờ đợi.

1. Cài đặt SSHFS trong 30 giây

Hầu hết các distro Linux đều có sẵn SSHFS trong kho ứng dụng chính thức.

Trên Ubuntu/Debian:

sudo apt update && sudo apt install sshfs

Trên CentOS/RHEL/AlmaLinux:

sudo yum install epel-release
sudo yum install sshfs

2. Các bước mount thư mục từ xa

Giả sử bạn có server tại IP 1.2.3.4 và muốn mount thư mục /var/www/html vào máy cá nhân tại ~/server_data.

Trước tiên, hãy tạo thư mục chứa:

mkdir -p ~/server_data

Tiến hành mount bằng lệnh sau:

sshfs [email protected]:/var/www/html ~/server_data

Hệ thống sẽ yêu cầu mật khẩu SSH. Tuy nhiên, mình khuyên anh em nên dùng SSH Key để kết nối vừa nhanh vừa bảo mật hơn.

3. Kiểm tra và sử dụng

Gõ lệnh ls ~/server_data để thấy thành quả. Lúc này, mọi thao tác kéo thả, chỉnh sửa file trên ~/server_data thực chất đang tác động trực tiếp lên server.

4. Ngắt kết nối (Unmount)

Khi xong việc, hãy ngắt kết nối để giải phóng tài nguyên:

fusermount -u ~/server_data

Mẹo tối ưu để SSHFS chạy mượt như ổ cứng thật

Dùng mặc định đôi khi sẽ thấy hơi lag nếu mạng yếu. Dưới đây là 2 tùy chỉnh mình luôn sử dụng.

Bật nén và giữ kết nối luôn sống

Thêm option nén và tự động kết nối lại nếu mạng chập chờn:

sshfs -o compression=yes -o reconnect -o ServerAliveInterval=15 [email protected]:/var/www/html ~/server_data

Tự động mount khi khởi động máy

Nếu lười gõ lệnh mỗi ngày, bạn có thể cấu hình trong /etc/fstab. Lưu ý phải dùng SSH Key để máy tự nhận diện mà không cần hỏi pass.

Thêm dòng này vào cuối file /etc/fstab:

[email protected]:/var/www/html /home/user/server_data fuse.sshfs _netdev,allow_other,IdentityFile=/home/user/.ssh/id_rsa 0 0

Mẹo nhỏ: Để allow_other hoạt động, hãy bỏ comment dòng user_allow_other trong file /etc/fuse.conf.

Lời kết

SSHFS không phải là lựa chọn số 1 để truyền tải file nặng hàng chục GB (lúc đó rsync vẫn tốt hơn). Tuy nhiên, để sửa code, đọc log hay quản lý config hàng ngày, đây là công cụ vô địch về sự tiện lợi.

Từ ngày dùng SSHFS, mình đã xóa sổ hoàn toàn các phần mềm FTP khỏi máy. Quy trình làm việc trở nên liền mạch, giúp mình tập trung tối đa vào logic code thay vì tốn sức cho việc di chuyển dữ liệu.

Share: