news 2026/8/27 15:23:39

Loki文件传输模块深度解析:SFTP通道如何实现远程文件双向上传下载

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Loki文件传输模块深度解析:SFTP通道如何实现远程文件双向上传下载

Loki文件传输模块深度解析:SFTP通道如何实现远程文件双向上传下载

【免费下载链接】LokiRemote Access Tool项目地址: https://gitcode.com/gh_mirrors/loki1/Loki

Loki 是一款简单的远程访问工具(Remote Access Tool),其文件传输模块是整套系统的亮点:通过一条独立的 SSL 加密 SFTP 通道,主控端一条upload命令即可把文件推送到远程机器,download命令即可把远程文件取回本地,轻松实现远程文件双向传输。

🧩 两套通道各司其职:为什么文件传输不走命令通道

Loki 采用经典的"主控–机器人"(server–bot)双端架构,通信上有两条独立通道:

  • 命令通道:bot 连上服务器后保持长连接,双方用 JSON 格式的{code, args}指令交互,全程基于 RSA-2048 交换密钥 + AES-256 加密,只负责"截屏""开 SSH"这类轻量指令;
  • 文件通道:文件流数据量大,Loki 不把它塞进命令通道,而是单独开放一个 SFTP 端口(默认128,定义在 lib/const.py)。两端用原生 TCP + SSL 套接字完成文件流传输。

这种"命令通道只传令、文件通道只运货"的分离设计,是理解 Loki 文件传输模块的关键。

🖥️ 快速上手:三步让文件传输通道可用

  1. 配置网络参数:修改 lib/const.py 中的PRIVATE_IP/PUBLIC_IPFTP_PORT(若远程机器在局域网外,需要在路由器上转发FTP_PORTSSH_PORT及服务器端口);
  2. 启动服务器pip install -r requirements.txt安装依赖,运行 loki.py,访问http://localhost:5000,默认账号loki/ikol
  3. 连接远程机器:生成 payload 并在目标机器执行,bot 上线后会出现在控制台的 Bots 列表中。

📤 上传文件到远程机器:upload 命令的完整链路

在命令控制台输入upload <file>即可触发整个上传流程(命令定义见 static/js/command.js):

  1. 传令:服务器通过命令通道向 bot 发送命令码3+ 文件名;
  2. 建监听:服务器端 lib/server/lib/sftp.py 绑定FTP_PORT,启动一次性临时监听;
  3. 握手验证:bot 端 agent/bot/lib/sftp.py 发起 SSL 客户端连接,发送测试串abc123并要求对端回显——即隧道检测,确保通道真正双向可用;
  4. 流式传输:先发送文件名,再按 64KB 分块把文件内容逐块写出(分块读写逻辑在 lib/server/lib/file.py),最后关闭连接并记录耗时。

📥 从远程机器取回文件:download 与截屏共用同一条管线

download <file>是镜像流程:服务器发送命令码4,bot 主动拨号接入 SFTP 端口,把目标文件流式读回,服务器将数据落盘到downloads/files/目录(接收逻辑见 lib/server/lib/sftp.py,落盘路径见 lib/const.py)。

截屏回传也复用同一条管线:命令码5触发 bot 截图后经上传通道推送,服务器在downloads/screenshots/下按时间戳保存。也就是说上传、下载、截屏三者共用同一条 SSL 文件通道

📊 传输进度监控:ftp_status 与 --override 双保险

文件传输在后台线程中执行,控制台因此提供了两个配套命令:

  • ftp_status:实时查询"正在上传/下载哪个文件",结束后还会显示是否成功与耗时(实现见 lib/server/lib/interface.py);
  • --override:已有传输在途时,新请求会被拒绝,使用download blueprint.pdf --override可强制覆盖旧进程。

🔒 值得注意的工程细节

  • 命名视角相反:服务器端sFTP类中send()表示"上传到远程机器"、recv()表示"从远程取回";而 bot 端 agent/bot/lib/shell.py 的命令映射恰好相反(3: download, 4: upload)。先理解这一点,读源码能少走一半弯路;
  • 超时保护:服务器端监听默认等待 60 秒(lib/server/lib/interface.py),bot 未及时接入会标记错误码并自动清理;
  • 一次性套接字:每次传输结束后服务器通过socket_closed()探测确认临时监听已关闭,避免端口占用;
  • 独立证书体系:文件通道使用本地cert/public.crt/private.key做 SSL 握手,与命令通道的加密体系互不干扰。

📁 相关文件速查

模块路径职责
服务器端文件通道lib/server/lib/sftp.py监听、流式收发、隧道检测
bot 端文件通道agent/bot/lib/sftp.py主动拨号、分块读写
命令调度lib/server/lib/interface.pyFTP 封装、ftp_status、--override
bot 命令映射agent/bot/lib/shell.py以命令码 3/4/5 执行上传/下载/截屏
分块文件读写lib/server/lib/file.py64KB 分块流式读写
网络与路径配置lib/const.pyFTP_PORT、下载落盘路径

Loki 文件传输模块的设计思路可以一句话概括:让轻量命令通道负责调度,让加密文件通道负责搬运,让一次性套接字保证每次传输干净可追溯——这也是它在实现上既简洁又可靠的根本原因。

【免费下载链接】LokiRemote Access Tool项目地址: https://gitcode.com/gh_mirrors/loki1/Loki

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 15:15:38

具身智能消费级机器人部署与二次开发实践指南

最近圈子里讨论比较多的一个话题&#xff0c;是“具身智能开始当消费品卖了”。从桌面机械臂到能做简单家务的人形机器人&#xff0c;再到带大模型对话能力的陪伴设备&#xff0c;产品定义越来越像消费电子&#xff0c;而不是科研样机。对普通用户来说&#xff0c;这意味着一台…

作者头像 李华
网站建设 2026/8/27 15:15:18

潮湿与腐蚀环境中的钢铁卫士:防腐货架的“不锈“智慧

在海鲜加工厂的潮湿空气中&#xff0c;在化工车间弥漫的化学蒸汽里&#xff0c;普通金属货架往往难逃锈蚀的命运。但有这样一类货架&#xff0c;它们默默矗立在严苛环境中&#xff0c;守护着每一件货物的安全——这就是防腐货架。它们不仅是仓库里的"钢铁卫士"&#…

作者头像 李华
网站建设 2026/8/27 15:15:12

一文详解AI大模型何为深入理解RAG?看完这一篇你就知道了!!

前言 当你看到大模型应用开发招聘JD中"深入理解RAG"这个要求时&#xff0c;HR和技术面试官到底在考察什么&#xff1f;本文为你拆解RAG技能的各个层级&#xff0c;明确什么才算"深入理解"。一、理解层级&#xff1a;你在哪一层 "深入理解RAG"并不…

作者头像 李华