我的应用程序 (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编写的,你可以找到源代码这里。如果您能理解它,您可能会发现源代码有助于理解日志消息。