#!/bin/bash # SFTP 上传详细调试测试脚本 # 启用最大日志级别,检查 SSH_FXP_OPEN 和 SSH_FXP_WRITE 处理 echo "=== SFTP 上传详细调试测试 ===" echo "测试目标:诊断 SSH_FXP_WRITE packet 未出现的原因" echo "" # 创建极小测试文件(1KB) echo "创建测试文件(1KB)..." dd if=/dev/urandom of=/tmp/sftp_debug_1kb.bin bs=1024 count=1 2>&1 | tail -1 ls -lh /tmp/sftp_debug_1kb.bin echo "" echo "=== 启用 SSH server 详细日志 ===" echo "日志文件:/private/tmp/sftp_upload_debug.log" # 重启 SSH server,启用 debug 级别日志 pkill -9 -f "markbase-core ssh-start" sleep 2 RUST_LOG=debug /Users/accusys/markbase/target/release/markbase-core ssh-start > /private/tmp/sftp_upload_debug.log 2>&1 & SSH_PID=$! sleep 3 echo "SSH server 重启完成(PID: $SSH_PID)" echo "" echo "=== 测试 1: 基本连接测试 ===" sshpass -p 'demo123' sftp -P 2024 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -v demo@127.0.0.1 <&1 | tail -5 else echo "远程文件不存在 ❌" fi echo "" echo "=== 详细日志分析 ===" echo "查看完整的 SSH_FXP_OPEN 处理流程..." grep -B 5 -A 20 "SSH_FXP_OPEN.*debug" /private/tmp/sftp_upload_debug.log | head -100 echo "" echo "=== 清理测试文件 ===" rm -f /tmp/sftp_debug_1kb.bin /tmp/sftp_upload_debug.bin /tmp/sftp_download_debug.bin echo "" echo "=== 测试完成 ===" echo "日志文件位置:/private/tmp/sftp_upload_debug.log" echo "请查看日志文件以诊断 SSH_FXP_WRITE 未出现的根本原因"