Hướng dẫn chi tiết cách sử dụng SSHFS trên Ubuntu 24.04 để mount dữ liệu từ server từ xa, cùng với hướng dẫn tạo SSH Key, cấu hình mount tự động bằng /etc/fstab, ví dụ upload web code lên AWS EC2 thông qua SSHFS và cuối cùng so sánh SCP/Rsync/S3.
Contents
Giới thiệu về SSHFS
SSHFS (SSH Filesystem) là một công cụ cho phép bạn mount thư mục từ máy chủ từ xa qua giao thức SSH thành một local file system. Khi đó, các file và thư mục trên server sẽ xuất hiện như thể đang ở trong máy của bạn, cho phép mở và chỉnh sửa bằng bất kỳ ứng dụng local nào. SSHFS tận dụng kết nối SSH có sẵn nên không cần cấu hình thêm, đồng thời đảm bảo an toàn nhờ mã hóa của SSH. Sau khi đã mount, bạn có thể thao tác với file từ xa giống như đang thao tác trên ổ đĩa trong máy, dễ dàng chỉnh sửa tài liệu, quản lý file mà không cần copy thủ công.
Cài đặt SSHFS trên Ubuntu 24.04
Trên Ubuntu 24.04, SSHFS không được cài sẵn. Bạn cần cài gói sshfs từ Repo. Mở Terminal và chạy:

Sau khi setup xong, bạn hãy vào quyền root để tiện sử dụng các lệnh:
Bây giờ SSHFS đã sẵn sàng sử dụng. Tiếp theo, bạn tạo một điểm mount (một thư mục trống) trên máy để kết nối với thư mục từ xa:
Ví dụ trên sẽ tạo thư mục ~/remote_mount dùng để chứa nội dung của thư mục từ xa.

Mount thư mục từ xa bằng SSHFS
Giả sử bạn có server từ xa với địa chỉ IP hoặc domain name của remote server này, ví dụ IP của remote server là: 192.168.146.167, (Chú ý: Trong ví dụ này remote server chạy OS Centos 9 ) thư mục cần mount là /projects, và đã tạo mount point là ~/remote_mount. Dùng lệnh:
Trong đó root là user của server, 192.168.146.167:/projects là server và thư mục từ xa, còn ~/remote_mount là điểm mount local. Sau khi chạy lệnh trên, thư mục từ xa sẽ được gắn vào ~/remote_mount. Kiểm tra bằng lệnh df -hT sẽ thấy dòng fuse.sshfs tương ứng mount point đó. Bây giờ bạn có thể duyệt, đọc/ghi file như bình thường. Để ngắt kết nối (unmount), bạn chạy:
Lệnh trên sẽ ngắt kết nối SSHFS và trả lại thư mục ~/remote_mount về trạng thái trống.

Tạo SSH Key Pair để dùng với SSHFS
Để SSHFS hoạt động trơn tru và có thể mount tự động (như qua fstab), bạn nên thiết lập xác thực bằng SSH key thay vì mật khẩu. Trên máy client (của bạn), chạy:
Lệnh này sẽ tạo cặp khóa SSH (mặc định là id_rsa và id_rsa.pub) trong thư mục ~/.ssh id_rsa là private key (giữ bí mật) và id_rsa.pub là public key. Sau khi tạo, bạn copy public key lên server, ví dụ dùng ssh-copy-id:
Ví dụ:
Lệnh này sẽ thêm public key của bạn vào ~/.ssh/authorized_keys trên server. Khi đó bạn có thể SSH (hoặc SSHFS) đến server mà không cần nhập mật khẩu.

Mount tự động bằng /etc/fstab
Ví dụ: Upload web lên AWS EC2 qua SSHFS
Giả sử bạn có một máy chủ web Amazon Linux EC2 , muốn upload code lên thư mục /var/www/html. Trước tiên trên server EC2, đảm bảo quyền của thư mục web:
(trong đó ec2-user là user mặc định của Amazon Linux EC2). Trên máy Ubuntu Linux Local, tạo mount point và mount thư mục từ xa với key:
Ví dụ lệnh trên dùng tuỳ chọn -o IdentityFile chỉ định file private key của AWS.
Chú ý: Đối với AWS EC2, bạn thường đã có một khóa .pem tải về khi tạo AWS EC2 . Bạn có thể dùng trực tiếp khóa .pem đó thay cho việc tạo khóa mới.
Sau khi mount xong, bạn chỉ việc copy files vào như làm việc với thư mục local:

Sau đó hãy xác nhận trên AWS EC2 của bạn là code cho website của bạn đã được upload thành công:

Sau khi upload xong, để ngắt mount khi không sử dụng: Nếu bạn chỉ mount tạm thời để copy hay truyền dữ liệu, sau khi xong việc, bạn nên unmount để giải phóng kết nối. Để tháo mount, dùng lệnh umount (hoặc fusermount -u nếu dùng user thường):
Lệnh trên sẽ ngắt kết nối SSHFS và thư mục /root/ec2_html trở về trống rỗng như cũ. (Mẹo: Nếu gặp lỗi “Transport endpoint is not connected” khi truy cập thư mục mount, điều đó có thể do kết nối mạng bị gián đoạn. Hãy dùng fusermount -u để unmount thư mục đó rồi mount lại nếu cần.)
Giờ web server trên AWS đã có nội dung mới. (Bạn cũng có thể dùng rsync -avz thay cho cp để đồng bộ thư mục.). Hãy tham khảo bài viết về lệnh rsync: Backup và Khôi Phục Dữ Liệu Trong Linux Server Với Rsync Và Tar – Luu Ho Phuong Blog
So sánh SSHFS, SCP, Rsync và S3
-
SSHFS: Ưu điểm là mount thư mục từ xa như ổ đĩa local, tiện lợi để chỉnh sửa file trực tiếp và duyệt file dùng các ứng dụng thông thường. Do sử dụng FUSE qua SSH nên không cần cài thêm dịch vụ khác. Nhược điểm là hiệu xuất chậm hơn khi chuyển nhiều file hoặc file lớn, vì mọi thao tác file đều qua mạng. Đặc biệt, khi dùng SSHFS thì các công cụ đồng bộ như
rsyncsẽ không thực hiện tối ưu delta và phải đọc toàn bộ file qua mạng. SSHFS chỉ phù hợp khi bạn cần thao tác tương tác trực tiếp với file từ xa (ví dụ chỉnh sửa code), không phải để sao chép nhiều dữ liệu một cách thường xuyên. -
SCP: Đơn giản để copy file qua SSH. Phù hợp cho các lần truyền file đơn lẻ, không cần đồng bộ hoá. Tuy nhiên, SCP sao chép nguyên file mỗi lần và không linh hoạt bằng rsync; nếu copy nhiều file hoặc cần giữ đồng bộ liên tục, SCP sẽ chậm hơn. Nếu chỉ cần copy nhanh 1-2 file, SCP là đủ để chúng ta sử dụng.
-
Rsync: Mạnh ở chỗ đồng bộ hoá thông minh (chỉ gửi khác biệt giữa các lần), hỗ trợ resume và nén. Phù hợp để sao chép hoặc backup nhiều file lớn, cần duy trì đồng bộ. Nhược điểm là cần chạy lệnh mỗi lần, và cũng phải kết nối SSH (với tuỳ chọn
-zđể mã hoá). Trong môi trường AWS, tài liệu AWS khuyến cáo dùng rsync qua SSH vì nó hiệu quả hơn SCP cho dữ liệu lớn. -
AWS S3: Lưu trữ các đối tượng trên đám mây, khác hoàn toàn với filesystem thông thường. S3 thích hợp để lưu trữ file tĩnh (hình ảnh, backup, hosting tĩnh) với độ bền cao và truy cập từ nhiều nơi. Bạn không thể mount trực tiếp như SSHFS (trừ khi dùng
s3fs), mà phải upload/download qua AWS CLI hoặc SDK. S3 kết nối qua giao thức HTTP và model đối tượng (có thể giả lập filesystem bằng s3fs nhưng không giống filesystem thật). Nói chung, nếu bạn cần lưu trữ lâu dài dữ liệu web hoặc static tại AWS và có nhiều servers truy cập vào dữ liệu, S3 là lựa chọn tốt. Còn nếu bạn muốn thao tác xử lý các files trực tiếp trên một EC2 duy nhất, SSHFS/SCP/Rsync sẽ thuận tiện hơn.
Lỗi thường gặp và cách khắc phục
-
Lỗi đặc quyền
fusermount: Nếu gặp thông báofusermount3: mount failed: Operation not permitted, có thể do thiếu bit SUID trên chương trìnhfusermount3. Chạy lệnh sau để sửa:Điều này đảm bảo người dùng không-root có thể chạy được lệnh mount qua FUSE.
-
Quyền thư mục mount: Thư mục đích phải có quyền
executecho user/group, kể cả thư mục cha. Nếu không, SSHFS có thể báo lỗi truy cập (vì không qua được các thư mục cha). Ví dụ, nếu mount vào~/ssh_mount, hãy chạy:Để đảm bảo bất kỳ user nào cũng có quyền duyệt đường dẫn đó.
-
AppArmor/Ephemeral rule: Trên một số bản Ubuntu, AppArmor có thể hạn chế mount FUSE tại vị trí không chuẩn (ví dụ dưới
/srv). Nếu gặp lỗi “permission denied” mà thư mục mount nằm ở vị trí lạ, bạn có thể thử mount vào/mnthoặc/homeđể khắc phục. Hoặc chỉnh sửa profile AppArmor tại/etc/apparmor.d/để cho phép mount. -
Chưa vào nhóm
fuse: Nếu không thể mount, hãy chắc chắn user của bạn đã được thêm vào nhómfuse:Sau đó logout và login lại.
Các lỗi khác thường liên quan tới mạng hoặc SSH (như hostname sai, key không đúng) thì khắc phục tương tự như lỗi SSH thông thường.
Kết luận
SSHFS là công cụ tiện lợi để truy cập và quản lý files trên server từ xa ngay trên máy của mình, với thao tác đơn giản và an toàn qua SSH. Bằng việc thiết lập SSH key và entry trong /etc/fstab, bạn có thể mount tự động thư mục từ xa mỗi khi khởi động hệ thống Linux, giúp đồng bộ dễ dàng hơn. Hãy thực hành trên máy thật để quen dần với các lệnh trên. Trong bài viết kế tiếp, bạn có thể tìm hiểu thêm về cách cấu hình mount tự động bằng /etc/fstab chi tiết hơn.
#SSHFS #Ubuntu #Linux #AWS #EC2 #SCP #Rsync #SSH #fstab #SSHKey


