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