如何調試/追蹤傳入的 SFTP 會話?

如何調試/追蹤傳入的 SFTP 會話?

我的應用程式 (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_配置文件並找到SubsystemSFTP 行。它看起來像這兩行之一或另一行:

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寫的,你可以找到原始碼這裡。如果您能理解它,您可能會發現原始程式碼有助於理解日誌訊息。

相關內容