Việc truyền tệp qua kết nối SSH, thông qua các công cụ như SFTP hoặc SCP, là phương pháp phổ biến để di chuyển một lượng dữ liệu nhỏ giữa các máy chủ. Tuy nhiên, trong một số trường hợp, bạn có thể cần chia sẻ toàn bộ thư mục, thậm chí là cả hệ thống tập tin giữa hai môi trường từ xa. Dù điều này có thể được thực hiện thông qua các giao thức như SMB hoặc NFS, nhưng cả hai đều yêu cầu thêm các thành phần phụ trợ, và có thể tiềm ẩn rủi ro bảo mật, cũng như gây ra một số chi phí vận hành không mong muốn.
Một giải pháp thay thếđơn giản và hiệu quả hơn là sử dụng SSHFS – công cụ cho phép bạn gắn kết (mount) thư mục từ xa chỉ bằng kết nối SSH. Cách làm này có ưu điểm lớn là không cần cấu hình bổ sung và tự động kế thừa quyền truy cập của người dùng SSH trên hệ thống từ xa. SSHFS đặc biệt hữu ích trong trường hợp bạn cần truy cập và đọc tương tác từng tệp trong một tập dữ liệu lớn.
Điều kiện tiên quyết
- Hai máy chủ Linux được cấu hình cho phép truy cập SSH giữa chúng. Trong đó, một máy có thể là máy cục bộ thay vì máy chủ trên nền tảng đám mây.
- Bạn có thể thực hiện điều này bằng cách làm theo hướng dẫn thiết lập máy chủ ban đầu của chúng tôi, bằng cách kết nối trực tiếp từ máy này sang máy kia qua SSH
Cách gắn các thư mục từ xa với SSHFS
Bước 1: Cài đặt SSHFS
SSHFS có sẵn trong hầu hết các kho phần mềm của các bản phân phối Linux. Trên Ubuntu, bạn có thể cài đặt bằng apt
.
Đầu tiên, sử dụng apt update
để làm mới nguồn cấp:
sudo apt update
Sau đó, sử dụng lệnh apt install
để cài đặt gói sshfs
.
sudo apt install sshfs
Lưu ý:
SSHFS cũng có thể được cài đặt trên macOS hoặc Windows thông qua các thư viện hệ thống tập tin như FUSE, giúp các nền tảng này tương thích với môi trường Linux. Mặc dù các khái niệm và cách kết nối tương tự như hướng dẫn này, bạn có thể cần sử dụng các giao diện cấu hình khác nhau hoặc cài đặt thư viện bên thứ ba. Hướng dẫn này sẽ chỉ đề cập đến SSHFS trên Linux, nhưng bạn hoàn toàn có thể điều chỉnh các bước này để áp dụng triển khai FUSE trên Mac hoặc Windows.
- Bạn có thể cài đặt SSHFS cho Windows từ GitHub Repository.
- Đối với macOS, cài đặt qua macFUSE Project.
Bước 2 – Gắn kết hệ thống tập tin từ xa
Trong môi trường Linux, để gắn kết một hệ thống tập tin từ xa, trước tiên bạn cần tạo một thư mục trống dùng làm điểm gắn. Hầu hết các môi trường Linux đều có một thư mục mặc định mà bạn có thể sử dụng là thư mục /mnt
.
Lưu ý: Trên Windows, hệ thống tập tin từ xa đôi khi được gắn kết với ổ đĩa riêng của chúng như G:
, và trên Mac, chúng thường được gắn kết trong thư mục /Volumes
.
Tạo một thư mục con trong /mnt
có tên là droplet
bằng lệnh mkdir
:
sudo mkdir /mnt/droplet
Sau đó, dùng lệnh sshfs
để gắn kết thư mục từ xa:
sudo sshfs -o allow_other,default_permissionssammy@your_other_server:~/ /mnt/droplet
sudo sshfs -o allow_other,default_permissions @:~/ /mnt/droplet
`sammy
your_other_server`
Các tùy chọn cho lệnh này hoạt động như sau:
-o
đứng trước các tùy chọn gắn kết khác nhau (điều này giống như khi chạy lệnhmount
thông thường đối với các gắn kết đĩa không phải SSH). Trong trường hợp này, bạn đang sử dụng lệnhallow_other
để cho phép những người dùng khác có quyền truy cập vào gắn kết này (để nó hoạt động giống như một gắn kết đĩa thông thường, vìsshfs
ngăn chặn điều này theo mặc định) vàdefault_permissions
(để nó sử dụng các quyền hệ thống tệp thông thường).sammy@your_other_server:~/
cung cấp đường dẫn đầy đủ đến thư mục từ xa, bao gồm tên người dùng từ xa,sammy
, máy chủ từ xa,your_other_server
và đường dẫn, trong trường hợp này là~/
cho thư mục gốc của người dùng từ xa. Nó sử dụng cú pháp giống như SSH hoặc SCP./mnt/droplet
: đường dẫn đến thư mục cục bộ đang được sử dụng làm điểm gắn kết.
Nếu gặp lỗi Connection reset by peer
, hãy đảm bảo rằng bạn đã sao chép khoá SSH vào máy chủ từ xa. sshfs
sử dụng kết nối SSH thông thường ở chế độ nền và nếu đây là lần đầu tiên bạn kết nối với hệ thống từ xa qua SSH, bạn có thể được nhắc chấp nhận dấu vân tay khóa của máy chủ từ xa.
Output
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
Lưu ý: Nếu bạn cần gắn thư mục từ xa bằng SSHFS mà không cần quyền sudo
, bạn có thể tạo nhóm người dùng có tên là fuse
trên máy cục bộ của mình bằng cách sử dụng sudo groupadd fuse
, sau đó thêm người dùng cục bộ vào nhóm đó bằng cách sử dụng sudo usermod -a -G fuse sammy
.
Bạn có thể sử dụng ls
để liệt kê các tệp trong thư mục được gắn kết để xem chúng có khớp với nội dung của thư mục từ xa hay không:
ls /mnt/droplet
Output
remote_file1 remote_file2
Từ đây, bạn có thể làm việc với các tệp trên máy chủ từ xa như thể nó là một thiết bị vật lý được gắn vào máy cục bộ của bạn. Ví dụ, nếu bạn tạo một tệp trong thư mục /mnt/droplet
, tệp đó sẽ xuất hiện trên máy chủ ảo của bạn. Tương tự như vậy, bạn có thể sao chép các tệp vào hoặc ra khỏi thư mục /mnt/droplet
và chúng sẽ được tải lên hoặc từ máy chủ từ xa của bạn ở chế độ nền.
Điều cần lưu ý là lệnh mount
chỉ gắn một đĩa từ xa cho phiên hiện tại của bạn. Nếu máy chủ ảo hoặc máy cục bộ bị tắt nguồn hoặc khởi động lại, bạn sẽ cần sử dụng cùng một quy trình để gắn lại.
Nếu bạn không cần gắn kết này nữa, bạn có thể hủy gắn kết bằng lệnh umount
:
sudo umount /mnt/droplet
Ở bước cuối cùng, hãy xem qua ví dụ về cách gắn kết cấu hình cố định.
Bước 3 – Gắn kết vĩnh viễn hệ thống tập tin từ xa
Tương tự như các ổ đĩa khác, bạn có thể sử dụng cấu hình SSHFS để gắn kết vĩnh viễn bằng cách chỉnh sửa tập tin /etc/fstab
.
Sử dụng lệnh nano
hoặc trình soạn thảo văn bản yêu thích của bạn, mở /etc/fstab
:
sudo nano /etc/fstab
Thêm dòng sau vào cuối tập tin:
/etc/fstab
…
sammy@your_other_server:~/ /mnt/droplet fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/sammy/.ssh/id_rsa,allow_other,default_permissions 0 0
Gắn kết cố định thường yêu cầu một số tùy chọn khác nhau để đảm bảo chúng hoạt động như mong đợi. Chúng hoạt động như sau:
sammy@your_other_server:~/
: đường dẫn từ xa như trước./mnt/droplet
: thư mục gắn kết cục bộ.fuse.sshfs
chỉ định trình điều khiển được sử dụng để gắn kết thư mục từ xa này.noauto,x-systemd.automount,_netdev,reconnect
là một tập hợp các tùy chọn hoạt động cùng nhau để đảm bảo rằng gắn kết cố định vào ổ đĩa mạng hoạt động bình thường trong trường hợp kết nối mạng bị ngắt khỏi máy cục bộ hoặc máy từ xa.identityfile=/home/sammy/.ssh/id_rsa
chỉ định đường dẫn đến khóa SSH cục bộ để có thể tự động gắn kết thư mục từ xa. Lưu ý rằng ví dụ này giả định rằng cả tên người dùng cục bộ và từ xa của bạn đều làsammy
. Cần phải chỉ định điều này vì/etc/fstab
thực sự chạy dưới dạng root và cần xác định cấu hình SSH thuộc tên người dùng nào để kiểm tra khóa được máy chủ từ xa tin cậy.allow_other,default_permissions
sử dụng cùng quyền từ lệnhmount
ở trên.0 0
biểu thị rằng hệ thống tệp từ xa không bao giờ bị hỏng hoặc được xác thực bởi máy cục bộ trong trường hợp có lỗi. Các tùy chọn này có thể khác nhau khi gắn kết đĩa cục bộ.
Lưu và đóng tệp: Nếu bạn đang sử dụng nano
, hãy nhấn Ctrl+X
, sau đó nhấn Y
rồi ENTER
. Bạn có thể kiểm tra cấu hình /etc/fstab
bằng cách khởi động lại máy cục bộ của mình, ví dụ bằng cách sử dụng sudo reboot now
và xác minh rằng gắn kết được tạo lại tự động.
Lưu ý:
Việc gắn kết SSHFS vĩnh viễn không phải lúc nào cũng phổ biến, vì đặc thù kết nối SSH thường phù hợp hơn với các giải pháp tạm thời. Tuy nhiên, nếu bạn cần một cách nhanh gọn và có thể cấu hình như ổ đĩa thật, SSHFS vẫn là lựa chọn linh hoạt và đáng tin cậy. Nó hoạt động như một trình điều khiển hệ thống tệp đầy đủ, cho phép bạn cấu hình trong /etc/fstab
giống như bất kỳ ổ đĩa nào khác và sử dụng khi cần thiết. Chỉ cần đảm bảo rằng bạn không vô tình chia sẻ nhiều tài nguyên hơn mức cần thiết từ máy chủ từ xa.
Kết luận
Trong hướng dẫn này, bạn đã học được cách sử dụng SSHFS để gắn kết một hệ thống tập tin từ xa qua SSH. Mặc dù không phải là giải pháp tối ưu cho các hệ thống sản xuất lớn, nhưng SSHFS rất hữu dụng khi bạn cần truy cập nhanh, linh hoạt mà không cần cài đặt phức tạp.
Nếu bạn đang tìm kiếm giải pháp chia sẻ tập tin giữa nhiều máy chủ một cách chuyên nghiệp hơn, hãy khám phá các dịch vụ lưu trữ đối tượng có hỗ trợ gắn kết đồng thời.