私のアプリケーション (JetBrains CLion) は、リモート サーバーに接続しSFTP
、そこにファイルを配置します。残念ながら、ファイルはゼロ バイトで埋められているように見えます。何が間違っているのかをトレースしたいです。
サーバー上で何かを実行して、SFTP
セッションをリアルタイムで監視し、何が起こっているかを確認することはできますか。私はroot
サーバー上にいます。サーバーは Ubuntu 16 を実行しています。
PSSFTP
自分でput
ファイルを実行すると、問題ありません。
クライアント側では、ログに問題は見当たりません。 とのセッションと、出力のある同様のコマンドがあるだけですput
。stat
その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ファイルを開き、Subsystem
SFTP の行を見つけます。次の 2 行のいずれかのようになります。
Subsystem sftp /path/to/sftp-server
Subsystem sftp internal-sftp
どのような場合でも、ログ記録引数を末尾に追加します。
Subsystem sftp /path/to/sftp-server -l DEBUG3
編集後sshd_config
、sshd
変更を有効にするには再起動する必要があります。
これらすべてを実行すると、SFTP セッションは syslog にデバッグ情報を記録し始めます。デバッグ メッセージを使用して、クライアントから送信されたコマンドと SFTP サーバーが実行するファイルシステム操作を追跡できます。
sftp-serverプログラムはC言語で書かれており、ソースコードは以下にあります。ここ理解できれば、ソース コードはログ メッセージの理解に役立つはずです。