Ban đầu tôi đã hỏi và trả lời điều này trên ngăn xếp chồng lên nhau nhưng tôi đã nói rằng nó lạc đề ở đó và nên được đăng ở đây. Đó là một công cụ hữu ích mà tôi muốn chắc chắn rằng mình đã ghi lại nó để có thể tìm thấy nó vào lần tới khi tôi cần.
SFTP tình cờ được sử dụng bởi các máy chủ SSH nhưng đó là một giao thức được phát triển tốt và tự hoạt động tốt. Máy chủ sftp do OpenSSH phát triển không phụ thuộc vào máy chủ SSH; sftp-server sử dụng đầu vào/đầu ra tiêu chuẩn. (Các máy chủ SFTP khác cũng tương tự.)
Việc chia sẻ hệ thống tệp qua SFTP là chuyện nhỏ, tương tự như những gì bạn có thể làm với NFS nhưng không cần quyền truy cập root. Tôi sẽ sử dụng socat làm trình nền cho ví dụ đặc biệt này, nhưng xinetd sẽ tạo ra một giải pháp lâu dài hơn. Vị trí của sftp-server là từ bản cài đặt Ubuntu của gói openssh-sftp-server.
Trên máy chủ:
$ mkdir shared_to_the_world
$ cd shared_to_the_world
$ socat tcp-listen:1234,reuseaddr,fork exec:/usr/lib/openssh/sftp-server
Trên máy khách:
$ mkdir /tmp/sftp_test
$ sshfs -o kết nối lại,ssh_command="nc my_sftp_server_address 1234 --" : /tmp/sftp_test
$ cd /tmp/sftp_test
Giờ đây, máy khách của bạn (và của bất kỳ ai khác!) có thể làm việc liền mạch với các tệp trong thư mục dùng chung trên máy chủ. Cả đọc và ghi đều được bật, vì vậy hãy cẩn thận.
Cân nhắc sử dụng các tùy chọn "liên kết" và "phạm vi" của socat listen để giới hạn quyền truy cập vào máy chủ của bạn.