3 điểm bởi GN⁺ 2023-09-06 | 1 bình luận | Chia sẻ qua WhatsApp
  • SSHFS cho phép mount hệ thống tệp từ xa bằng SFTP, và vì phần lớn máy chủ SSH hỗ trợ/kích hoạt truy cập SFTP theo mặc định nên có thể dùng mà không cần thao tác gì ở phía máy chủ
  • Nhánh fork bảo trì deadbeefsociety/sshfs đã được lưu trữ vì SSHFS không còn ở trạng thái bị bỏ mặc nữa; đối tượng cần sử dụng là libfuse/sshfs
  • SSHFS có trong các bản phân phối Linux chính và đã có lịch sử được dùng trong production trên nhiều hệ thống trong thời gian dài, nhưng hiện không có cộng tác viên hoạt động thường xuyên và các vấn đề đã biết nằm trong bugtracker
  • Người bảo trì hiện tại vẫn tiếp tục áp dụng pull request và phát hành định kỳ, nhưng ngoài việc xử lý các vấn đề tác động lớn thì không còn nhiều nguồn lực phát triển; các báo cáo lỗi không kèm pull request hoặc các vấn đề không nghiêm trọng có khả năng cao sẽ không nhận được phản hồi
  • Cú pháp chạy cơ bản là sshfs [user@]hostname:[directory] mountpoint; nên chạy bằng người dùng thông thường và mountpoint phải thuộc sở hữu của người dùng đó
    • Nếu bỏ qua tên người dùng thì sẽ dùng tên người dùng cục bộ
    • Nếu bỏ qua thư mục thì sẽ mount thư mục home từ xa
    • Nếu cần mật khẩu, ssh do sshfs chạy sẽ yêu cầu nhập mật khẩu
  • Có thể chỉ định nhiều tùy chọn ssh, bao gồm -oport=PORT; để unmount, dùng fusermount -u mountpoint trên Linux và umount mountpoint trên BSD và macOS
  • Để build cần libfuse 3.1.0 trở lên hoặc giao diện tương thích libfuse3, Glib có kèm header phát triển, Meson 0.38 trở lên và Ninja; để chạy test cần mô-đun Python py.test

1 bình luận

 
GN⁺ 2023-09-06
Các ý kiến trên Hacker News
  • Nếu bạn muốn thứ hoạt động ở không gian người dùng và thấy Emacs ổn, có TRAMP “Transparent Remote (file) Access, Multiple Protocol”: https://www.gnu.org/software/tramp/
    Tôi thường dùng nó khi truy cập tệp trên máy chủ từ MacBook Pro

    • Điểm hay nhất của TRAMP là sau khi cd vào một thư mục trên hệ thống từ xa, bạn có thể cp tệp từ thư mục làm việc hiện tại sang máy cục bộ hoặc một máy từ xa khác, và ngược lại cũng có thể sao chép từ máy cục bộ vào thư mục làm việc từ xa hiện tại
      Trước khi dùng TRAMP, tôi phải SSH vào máy từ xa, dùng cdls để tìm vị trí cần sao chép, ngắt phiên SSH rồi chuyển tệp bằng scp hoặc rsync, và thường lại phải SSH vào lần nữa
    • Nhân tiện, khá nhiều, có lẽ là hầu hết hoặc toàn bộ tính năng của Emacs hoạt động minh bạch với Tramp. Bao gồm cả dired, eshell, magit
  • Thú vị thật. Tôi luôn nghĩ sshfs là một phần của OpenSSH, ngày nào cũng học được điều mới
    sshfs dùng trong Slackware cũng có vẻ đang bị bỏ bê: https://github.com/libfuse/sshfs
    Nhìn vào đoạn trích trong liên kết, tôi tự hỏi liệu dự án này có trở thành “người kế nhiệm” đó không

    If you would like to take over this project, you are welcome to do so. Please fork it and develop the fork for a while. Once there has been 6 months of reasonable activity, please contact Nikolaus@rath.org and I'll be happy to give you ownership of this repository or replace with a pointer to the fork.
    Tôi cũng tự hỏi liệu nó có bị bỏ bê vì tái tổ chức RHEL, giống như chuyện đã xảy ra với Bluetooth không

    • Có vẻ rất hợp để các maintainer của OpenSSH đảm nhận. Tôi cũng từng nghĩ đây là hạ tầng SSH cốt lõi của Linux
  • Nhân tiện, trên Mac tôi đã dùng macFUSE + sshfs trong nhiều năm, nhưng giờ chỉ cài và dùng công cụ Mountain Duck rất tuyệt. Có thể truy cập các endpoint SFTP qua Finder và điểm mount
    Đây là phần mềm rất tốt và với tôi là thứ không thể thiếu

    • Gần đây tôi lại trở thành khách hàng của rsync.net, và khi lướt qua tài liệu, tôi hơi ngạc nhiên khi thấy Fuse/sshfs vẫn được nêu là tùy chọn khuyến nghị để tích hợp với Mac: https://www.rsync.net/resources/howto/mac_sshfs.html
      Vài tháng trước vì chuyện này mà tôi đã thử ExpanDrive/StrongSync, còn Mountain Duck thì lần này mới nghe tới. Tôi thích Cyberduck. Giờ tôi định dùng thử; nếu nó đang hoạt động tốt, mong bạn cập nhật trang đó cho những người khác. Ngoài ra thì tôi là một khách hàng hài lòng
    • Để ghi lại, macOS giờ có https://www.fuse-t.org/. Nó hoạt động không cần kernel extension, bằng cách chạy một máy chủ NFS cục bộ ở nền rồi để macOS kết nối vào đó
      Phần triển khai sshfs cũng có tại https://github.com/macos-fuse-t/fuse-t/wiki#sample-filesyste...
    • Tôi cũng chủ yếu dùng Mountain Duck. Tuy nhiên trong VSCode, tiện ích mở rộng Remote SSH của Microsoft rất hữu ích khi làm việc với repo trên VM hoặc máy từ xa khác
      Trên macOS, Libfuse/SSHFS đã trở nên khá phiền để dùng từ vài năm trước, nên tôi cũng chuyển sang Mountain Duck
  • Thật tiếc khi sshfs không còn được bảo trì nữa. Hồi ở trường, tôi đã dùng sshfs để chỉnh sửa code bằng vô số plugin Vim của mình mà không phải cài toàn bộ plugin Vim lên máy chủ tính toán từ xa
    Tôi ngạc nhiên vì hệ thống hoạt động mượt hơn mình tưởng rất nhiều

  • Tôi nghĩ SFTP là một giao thức tốt nhưng bị đánh giá thấp. Có những trường hợp mirror hai chiều hợp lý hơn việc sao chép cây tệp từ bên này sang bên kia
    Sau khi fork và xem mã SSHFS, tôi đã tổng hợp và duy trì các tài liệu liên quan cùng suy nghĩ cá nhân tại https://hackmd.io/@q/sftp-over-ws

    • SFTP là một cải tiến lớn so với FTP, nhưng phía máy chủ vẫn còn nhiều tiềm năng chưa được hiện thực hóa, nên chỉ làm client tốt hơn là chưa đủ
      Cả máy chủ OpenSSH lẫn GNU lsh đều chỉ cung cấp phiên bản giao thức cũ. Có lẽ là v2. Việc giữ cũ này là lựa chọn có chủ đích: https://marc.info/?l=openssh-unix-dev&m=168488976013498&w=2
  • Tổ hợp công nghệ thì hơi khác, nhưng một thời gian nay tôi dùng NFS trên WireGuard và khá hài lòng

    • Khi kênh TCP bị reset, NFS xử lý việc kết nối lại một cách nhã nhặn hơn, đây là lợi thế lớn
      Nó cũng triển khai nhiều tính năng hệ thống tệp hơn, nên báo cáo df phản ánh chính xác dung lượng sử dụng của hệ thống tệp từ xa
      Ngoài ra, NFSv4 cung cấp “delegations”, cho phép trao toàn quyền kiểm soát một tệp cho client dưới dạng một lease có thời hạn. Các client NFS hiện đại còn có “polite delegations”, ngầm gia hạn thời hạn lease
      SSHFS rất tiện để mount kiểu “nhanh và tạm được” với cấu hình tối thiểu
    • Tôi thì đi theo hướng ngược lại. Hạ tầng VPN rất ổn định, nhưng tôi chuyển sang cách tiếp cận lưu trữ
      Sau khi đồng bộ tệp bằng một tiện ích lưu trữ DVFS rất đơn giản, tôi không còn nhìn lại nữa. Tôi thích có nhiều bản sao ở khắp nơi
    • Vài năm trước tôi đã chuyển từ sshfs sang NFSv4 + WireGuard, và nó hoạt động rất tốt
  • Hiện nay khi cần chức năng kiểu sshfs thì chủ yếu dùng rclone mount. Hiệu năng, độ ổn định và các tùy chọn cache tốt hơn

    • Tuy nhiên rclone không thể ghi vào giữa một tệp nếu không truyền toàn bộ tệp. Đó là vấn đề lớn nhất
      sshfs cũng có thể có cùng hạn chế
  • Đáng tiếc là fork này trông không hoạt động sôi nổi lắm. Commit cuối cùng là vào tháng 3, hoạt động PR và issue cũng hầu như không có
    Tôi sẽ không đặt kỳ vọng vào đây

    • Nếu là một dự án ổn định thì bạn kỳ vọng mức độ hoạt động khoảng bao nhiêu?
    • Theo định nghĩa kiểu JavaScript, “hoạt động sôi nổi” nghĩa là đụng vào thứ đang chạy tốt rồi làm hỏng nó
  • Nautilus, tức trình quản lý tệp của Ubuntu, hỗ trợ mount thư mục SFTP. Bên trong có vẻ dùng gvfs
    Vì SFTP dùng kết nối SSH để truyền tệp, nên so với SSHFS tôi không thấy khác biệt gì về UI

    • Có thể duyệt endpoint SFTP trong GUI của Nautilus, nhưng đồng thời nó có tạo ra điểm mount hệ thống tệp để dùng được trong terminal không?
      Tôi không nhớ rõ
  • Có ai từng dùng rclone hoặc sshfs cùng với macFUSE/osxfuse trên Mac OS X chưa?

    • Tôi đang dùng Macfuse để gắn tất cả server của mình như các thư mục cục bộ. Hoạt động tốt
      Mỗi server có một script nhỏ. Ví dụ mount_fooserver.sh:
      umount -f ~/mounts/fooserver
      sshfs -o kill_on_unmount,reconnect,allow_other,defer_permissions,direct_io username@server:/ ~/mounts/fooserver -ovolname=foo
    • Trên M1, tôi dùng macFUSE và sshfs để mount ổ đĩa của máy Linux ở văn phòng. Nhìn chung ổn, nhưng vẫn có cảm giác hơi lục cục đặc trưng
      Quá trình thiết lập khá giống một cuộc phiêu lưu, vài lần tôi tự hỏi liệu có đúng không, nhưng cứ làm tiếp thì cuối cùng chạy tốt
    • Xem bình luận cấp cao nhất của tôi ở phía trên. Câu trả lời là “Mountain Duck”
    • Trên Monterey, M1, sshfs chạy được nhưng hơi chậm