# 跨服务器直传:目标机写入提权 **日期**:2026-06-21 ## 摘要 直传(relay)在目标机写入时改用 `remote_write_bytes`(SFTP 失败自动 `sudo tee`),与文件上传一致;修复目标目录无写权限时 500 且前端仅显示「操作失败」。 ## 动机 生产日志:`asyncssh.sftp.SFTPPermissionDenied` 于 `dst_sftp.open(..., "wb")`;宝塔子机常见 www 目录需 sudo 写入。 ## 涉及文件 | 路径 | 说明 | |------|------| | `server/application/services/server_file_transfer_service.py` | relay 写入/建目录提权 | | `server/api/sync_v2.py` | relay 未捕获异常 → 502 + detail | | `frontend/src/composables/useServerFileTransfer.ts` | `formatApiError` 展示后端 detail | ## 验证 ```bash pytest tests/test_server_file_transfer.py -q ``` 传输页直传至 B 机 `target_path` 下目录;失败时应显示具体原因而非「操作失败」。 ## 回滚 恢复裸 SFTP `dst_sftp.open` 并重启 API。