着信 SFTP 会話をデバッグ/トレースするにはどうすればよいでしょうか?

着信 SFTP 会話をデバッグ/トレースするにはどうすればよいでしょうか?

私のアプリケーション (JetBrains CLion) は、リモート サーバーに接続しSFTP、そこにファイルを配置します。残念ながら、ファイルはゼロ バイトで埋められているように見えます。何が間違っているのかをトレースしたいです。

サーバー上で何かを実行して、SFTPセッションをリアルタイムで監視し、何が起こっているかを確認することはできますか。私はrootサーバー上にいます。サーバーは Ubuntu 16 を実行しています。

PSSFTP自分でputファイルを実行すると、問題ありません。


クライアント側では、ログに問題は見当たりません。 とのセッションと、出力のある同様のコマンドがあるだけですputstatそのOkため、サーバー側もデバッグしたいと思います。

答え1

OpenSSH サーバーというプログラムを使用しますsftp サーバーSFTP セッションの場合、sftp-serverログ記録を制御するためのオプションがいくつかあります。

-f ログ機能
sftp-server からのメッセージをログに記録するときに使用する機能コードを指定します。指定できる値は、DAEMON、USER、AUTH、LOCAL0、LOCAL1、LOCAL2、LOCAL3、LOCAL4、LOCAL5、LOCAL6、LOCAL7 です。デフォルトは AUTH です。

-l ログレベル
sftp-server によってログに記録されるメッセージを指定します。指定できる値は、QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2、および DEBUG3 です。INFO および VERBOSE は、sftp-server がクライアントに代わって実行するトランザクションをログに記録します。DEBUG と DEBUG1 は同等です。DEBUG2 および DEBUG3 はそれぞれ、より高いレベルのデバッグ出力を指定します。デフォルトは ERROR です。

これらを適用するには、システムのsshd_configファイルを開き、SubsystemSFTP の行を見つけます。次の 2 行のいずれかのようになります。

Subsystem   sftp    /path/to/sftp-server
Subsystem   sftp    internal-sftp

どのような場合でも、ログ記録引数を末尾に追加します。

Subsystem   sftp    /path/to/sftp-server -l DEBUG3

編集後sshd_configsshd変更を有効にするには再起動する必要があります。

これらすべてを実行すると、SFTP セッションは syslog にデバッグ情報を記録し始めます。デバッグ メッセージを使用して、クライアントから送信されたコマンドと SFTP サーバーが実行するファイルシステム操作を追跡できます。

sftp-serverプログラムはC言語で書かれており、ソースコードは以下にあります。ここ理解できれば、ソース コードはログ メッセージの理解に役立つはずです。

関連情報