我的應用程式 (JetBrains CLion) 透過連接到我的遠端伺服器SFTP
並將檔案放置到那裡。不幸的是,文件看起來充滿了零位元組。我想追踪,到底出了什麼問題。
我可以在我的伺服器上運行一些東西來SFTP
即時監控會話並查看發生了什麼。我是root
伺服器上的。伺服器運行 Ubuntu 16。
PS 如果我運行SFTP
自己和put
文件,它們就可以了。
在客戶端,我在日誌中沒有看到任何問題:只是一些帶有 的會話put
以及stat
具有輸出的類似命令Ok
。所以也想調試伺服器端。
答案1
這OpenSSH 伺服器使用一個名為sftp伺服器用於 SFTP 會話。sftp-server
有幾個選項來控制日誌記錄:
-f 日誌設施
指定從 sftp 伺服器記錄訊息時所使用的設施代碼。可能的值為:DAEMON、USER、AUTH、LOCAL0、LOCAL1、LOCAL2、LOCAL3、LOCAL4、LOCAL5、LOCAL6、LOCAL7。預設為 AUTH。-l 日誌級別
指定 sftp 伺服器將記錄哪些訊息。可能的值為:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2 和 DEBUG3。 INFO 和 VERBOSE 記錄 sftp 伺服器代表客戶端執行的事務。 DEBUG 和 DEBUG1 是等效的。 DEBUG2 和 DEBUG3 各自指定更高層級的偵錯輸出。預設為錯誤。
要應用這些,您需要打開系統的sshd_配置文件並找到Subsystem
SFTP 行。它看起來像這兩行之一或另一行:
Subsystem sftp /path/to/sftp-server
Subsystem sftp internal-sftp
無論您有什麼,都將日誌記錄參數附加到末尾:
Subsystem sftp /path/to/sftp-server -l DEBUG3
編輯後sshd_config
,必須重新啟動sshd
才能使變更生效。
完成所有這些後,SFTP 會話應該開始將偵錯資訊記錄到系統日誌中。您可以使用偵錯訊息來追蹤客戶端發送的命令以及 SFTP 伺服器執行的檔案系統操作。
sftp-server程式是用C寫的,你可以找到原始碼這裡。如果您能理解它,您可能會發現原始程式碼有助於理解日誌訊息。