Linux

如何在沒有 SSH 的情況下使用 SFTP?

  • February 9, 2022

我想要一個快速靈活的文件伺服器,但我不需要加密或身份驗證。如何在 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 的“綁定”和“範圍”選項來限制對伺服器的訪問。

引用自:https://serverfault.com/questions/1092940