Add SFTP upload debug test and result report
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled

- Add sftp_upload_debug_test.sh: detailed upload debugging script
- Add sftp_test_result_report.md: complete test results
- Verify: 1KB file upload/download successful, MD5 consistent
- Issue: SSH_FXP_WRITE log missing, file attributes format abnormal
- Status: SFTP core functionality working, small file transfer successful
This commit is contained in:
Warren
2026-06-17 18:18:19 +08:00
parent 60586c9fad
commit 45e8a9f440
2 changed files with 349 additions and 0 deletions

102
data/sftp_upload_debug_test.sh Executable file
View File

@@ -0,0 +1,102 @@
#!/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 <<EOF
pwd
bye
EOF
echo ""
echo "=== 测试 2: SFTP 上传测试1KB 文件)==="
echo "使用 -v 参数启用详细日志..."
sshpass -p 'demo123' sftp -P 2024 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -v demo@127.0.0.1 <<EOF
put /tmp/sftp_debug_1kb.bin /tmp/sftp_upload_debug.bin
ls -la /tmp/
bye
EOF
echo ""
echo "=== 检查远程文件状态 ==="
sshpass -p 'demo123' sftp -P 2024 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null demo@127.0.0.1 <<EOF
ls -la /tmp/sftp_upload_debug.bin
stat /tmp/sftp_upload_debug.bin
bye
EOF
echo ""
echo "=== SSH server 日志分析 ==="
echo "查找 SSH_FXP_OPEN 和 SSH_FXP_WRITE..."
grep -E "SSH_FXP_OPEN|SSH_FXP_WRITE|SSH_FXP_HANDLE" /private/tmp/sftp_upload_debug.log | tail -30
echo ""
echo "=== 检查文件完整性 ==="
if [ -f "/tmp/sftp_upload_debug.bin" ]; then
echo "远程文件存在,检查大小..."
sshpass -p 'demo123' sftp -P 2024 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null demo@127.0.0.1 <<EOF
ls -la /tmp/sftp_upload_debug.bin
bye
EOF
# MD5 校验
echo ""
echo "源文件 MD5:"
md5 /tmp/sftp_debug_1kb.bin
echo "下载文件并校验..."
sshpass -p 'demo123' sftp -P 2024 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null demo@127.0.0.1 <<EOF
get /tmp/sftp_upload_debug.bin /tmp/sftp_download_debug.bin
bye
EOF
echo "下载文件 MD5:"
md5 /tmp/sftp_download_debug.bin
echo ""
echo "文件大小对比:"
ls -lh /tmp/sftp_debug_1kb.bin /tmp/sftp_upload_debug.bin /tmp/sftp_download_debug.bin 2>&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 未出现的根本原因"