Linux
如何在沒有 SSH 的情況下使用 SFTP?
我想要一個快速靈活的文件伺服器,但我不需要加密或身份驗證。如何在 Linux 系統上使用 SFTP?
我最初在stackoverflow上詢問並回答了這個問題,但有人告訴我這是題外話,應該在這裡發布。這是一個非常方便的工具,我想確保將它記錄在案,以便下次需要時可以找到它。
SFTP 恰好被 SSH 伺服器使用,但它是一個開發良好的協議,可以單獨執行。OpenSSH 開發的 sftp-server 不依賴 SSH 伺服器;sftp-server 使用標準輸入/輸出。(其他 SFTP 伺服器類似。)
通過 SFTP 共享文件系統是微不足道的,類似於您可能使用 NFS 執行的操作,但不需要 root 訪問權限。我將使用 socat 作為這個 ad-hoc 範例的守護程序,但 xinetd 會提供更持久的解決方案。sftp-server 的位置來自我的 Ubuntu 安裝的 openssh-sftp-server 包。
在伺服器上:
$ mkdir shared_to_the_world $ cd shared_to_the_world $ socat tcp-listen:1234,reuseaddr,fork exec:/usr/lib/openssh/sftp-server
在客戶端:
$ mkdir /tmp/sftp_test $ sshfs -o reconnect,ssh_command="nc my_sftp_server_address 1234 --" : /tmp/sftp_test $ cd /tmp/sftp_test
現在,您的客戶端(以及其他任何人的!)可以無縫地處理伺服器上共享目錄中的文件。讀寫都啟用,所以要小心。
考慮使用 socat listen 的“綁定”和“範圍”選項來限制對伺服器的訪問。