着信SFTPセッションをデバッグ/追跡する方法は?

着信SFTPセッションをデバッグ/追跡する方法は?

私のアプリケーション(JetBrains CLion)はリモートサーバーに接続し、SFTPそこにファイルを配置する方法で動作します。残念ながら、ファイルは0バイトでいっぱいになったようです。何が間違っているかを追跡したい。

私のサーバーで何かを実行して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_configSubsystemファイルを開き、SFTP行を見つけます。次の2行のいずれかのように見えます。

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で書かれており、ソースコードを見つけることができます。ここ。理解できれば、ログメッセージを理解するのにソースコードが役に立つかもしれません。

おすすめ記事