Skip to content

Releases: Boulea7/shellpier

ShellPier v0.8.0-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 Oct 15:36

本版增加 host 托管终端、反向 SOCKS5 与远端文件独立复制,并继续对照 OpenSSH、tmux、Mosh、tmate 和 rclone 核对实现边界。

新功能与修复

  • terminals open/read/write/list/status/resize/signal/close/operation:由目标端 host 保存 PTY。SSH 断线后用原票据和 terminal ID 继续控制同一终端,保留 shell 变量、工作目录与输出游标。open/write 支持 operation ID 去重和查询;调用结果未知时查询原操作,不自动重放输入。
  • forward TICKET --reverse --dynamic --listen 0:目标端建立 loopback SOCKS5 CONNECT 监听,域名解析与出站连接发生在控制端。单个目的连接失败不会关闭整个监听。
  • files copy TICKET SOURCE DEST:经控制端 SFTP 固定缓冲流复制远端普通文件,生成独立副本,默认不覆盖。支持 --dry-run;不自动创建父目录,失败可能保留部分目标文件。
  • 修复 proxy --to 在票据到期边界可能将超时报告为普通 SSH 断线的竞态。连接断开测试同时覆盖执行所在连接和整个中继连接池,并继续验证命令不会被自动重放。
  • 同步帮助、命令 schema、MCP、Agent skill 与中英文文档。MCP 的 terminals open/write 要求显式 operation ID,未知结果保留查询所需身份。

命令手册提供完整示例。工具对比记录一手资料、OpenSSH 逐项差异和本轮取舍。

使用边界

terminals 限于同一个 host 进程;host 退出、票据 TTL 或终端 lifetime 到期后结束,不跨 host 重启恢复,不提供屏幕模拟、UDP 漫游或多人权限分离。旧 terminal 控制端 worker 继续保留。

反向 SOCKS 只支持 CONNECT,不支持 UDP/BIND;--allow-forward 约束目标端正向出站,不限制控制端出站。files copy 明确报告 transport:client-stream,不是 SFTP 服务端 copy-data,也不使用共享 inode 的硬链接。

OpenSSH 闲置 channel 超时、远端 Unix socket、完整多跳编排,以及 SFTP fsync/statvfs/copy-data 服务端能力仍未加入。已有协议或客户端方法不能证明服务端实现了对应能力。

Windows 继续沿用经过来源校验的 Go 官方运行时修复;原 v0.5 崩溃的历史根因仍未确认。本轮调整了旧测试中小于产品正常启动期限的测试预算,并增加失败诊断,没有据此认定原 Windows 失败的完整根因。

已完成验证

  • 最终源码 CI:Linux、macOS、Windows 的 vet、race 与十轮重复测试,以及最低 Go 版本、漏洞扫描全部通过。
  • 发行流程:七个离线 ZIP 构建通过,Windows amd64/386 最终包在 Windows 原生执行 version 与 doctor 通过。
  • 七个下载包的来源提交、完整性、构建信息、许可证与文档通过检查;Windows 三种架构的实际补丁标记与来源记录一致。
  • macOS arm64 最终包八组验收通过,覆盖跨连接终端状态、操作去重与冲突、host 停止回收、反向 SOCKS 的解析与失败恢复、独立文件复制和限制,以及既有 MCP/jobs/PTY、目录分享、OpenSSH、转发、清单与文件管道回归。

提供 Linux amd64/arm64、macOS amd64/arm64、Windows amd64/386/arm64。Windows arm64 等交叉构建目标没有在本轮完成全部原生运行验收,最低系统版本亦未新增实机证明。

来源提交:e3161d119ca7469708de317dd2444018fca5c729。

ShellPier v0.7.0-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 19:00

本版增加多端口转发、文件清单传输与终端原始输出,继续完善 CLI 和 Agent 的组合用法。

新功能与修复

  • forward TICKET --local 8080=HOST:80 --local 5432=DB:5432:最多 16 个本地监听共用一个 SSH 连接;全部绑定成功后才报告就绪。单个目的连接失败不再关闭其他连接和监听,固定与反向转发同步改进。
  • upload/download TICKET SOURCE_ROOT DEST_ROOT --files-from LIST [--from0]:按本地路径清单选择普通文件,保留目录层级。支持 LF/CRLF 或 NUL 分隔、stdin 清单、预演、跳过已有文件、时间保留与限速,默认仍不覆盖。
  • terminal tail --state FILE [--cursor N] [--follow]:直接输出原始终端字节,报告缓冲丢失;停止读取不关闭终端。固定首次会话身份,状态文件被其他会话替换时停止,避免混入其他输出。
  • 帮助、JSON schema、补全、MCP 和 Agent skill 同步更新。MCP 接受本地清单文件,但不允许读取协议 stdin;持续 tail 不进入 MCP 工具集。

命令手册包含示例与边界。工具对比补充 OpenSSH、Chisel、rsync/rclone、tmux/Mosh/tmate 的一手资料及逐项差异。

仍保留的边界

host 托管、跨 SSH 断线恢复原 PTY 尚未实现;tail 读取的是现有 worker 的缓冲,不提供这项恢复能力。清单传输先预检、写入时再检查,但不构成整批事务。闲置 channel 超时、远端 Unix socket 与 SFTP 服务端 copy-data 仍未加入。

Windows 继续使用上一版经过来源校验的 Go 官方运行时修复。原 v0.5 崩溃的历史根因仍未确认,本轮没有把既有补丁重新归因为原事故的已证实修复。

已完成验证

  • 源码 CI:Linux、macOS、Windows 的 vet、race 与十轮重复测试,以及最低 Go 版本、漏洞扫描全部通过。
  • 发行流程:七个离线 ZIP 构建通过,Windows amd64/386 最终包在 Windows 原生执行 version 与 doctor 通过。
  • 七个下载包的来源提交、完整性、构建信息、许可证与文档通过检查;Windows 三种架构的实际补丁标记与来源记录一致。
  • macOS arm64 最终包七组验收通过,包含本轮多监听故障隔离、清单双向传输、tail 取消与关闭后排空,以及已有 MCP/jobs/PTY、目录分享、OpenSSH、SOCKS5、stdio 代理和文件管道回归。

提供 Linux amd64/arm64、macOS amd64/arm64、Windows amd64/386/arm64;Windows arm64 等交叉构建目标没有在本轮完成全部原生运行验收,最低系统版本亦未新增实机证明。

来源提交:8b7794fe494fe23573d22e0348d64b02424ca0b1。

ShellPier v0.6.0-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 18:21

本版补齐临时代理与文件管道操作,并为 Windows 发行包回补 Go 官方运行时修复。

新功能

  • forward TICKET --dynamic --listen 1080:内置 SOCKS5 CONNECT,支持 IPv4、IPv6 与目标端域名解析。
  • proxy TICKET --to HOST:PORT:通过 SSH 连接把 stdin/stdout 桥接到目标 TCP 服务,可作为下一跳 SSH 的 ProxyCommand。
  • upload TICKET - REMOTE / download TICKET REMOTE -:直接上传 stdin、下载到 stdout,保留二进制内容;仍默认拒绝覆盖已有文件。
  • 命令帮助、JSON schema、补全、MCP 边界与 Agent skill 同步更新。普通操作不增加手工 SHA 校验或许可步骤。

用法和边界见命令手册。工具对比补充 OpenSSH、rsync/rclone、croc、Chisel、Mosh、tmux 等一手资料,区分本轮落地、已有客户端可复用能力和仍未实现的功能。

Windows 调查与修复范围

Windows ZIP 使用隔离的 Go 1.27.2 工具链,回补上游提交 0042b271,避免在线程处理异常或系统调用时不安全地注入异步抢占。只修改 Windows 运行时,随包记录补丁来源;不修改用户已经安装的 Go,也不全局关闭异步抢占。

原 v0.5 concurrent map writes 崩溃的历史根因仍未确认。 这次交付修复的是 Go 已确认的缺陷,不能将它与原事故视为已经建立因果关系。调查记录

四台 Windows 的三组对照诊断完成 288 个运行时探针进程、288 个 HostRetry 进程(每进程重复 50 次),全部通过且未出现旧崩溃签名。36 次完整 CLI 测试中,原版及补丁组各 12 次全部通过;关闭异步抢占组 11 次通过、1 次终端启动测试失败。该失败有空输出、退出码 1,但缺少足够证据确认具体原因,记录予以保留;此对照配置不用于发行。

平台范围

提供 Linux amd64/arm64、macOS amd64/arm64、Windows amd64/386/arm64 共七个离线 ZIP。Windows arm64 为交叉构建,本次没有原生 arm64 运行验收。更早系统版本和 Win7/8 Legacy 路线的边界见兼容性说明。

已完成验收

  • 源码 CI:Linux、macOS、Windows 的 vet、race、十轮重复测试通过;最低 Go 版本与漏洞扫描通过。
  • 发行流程:七平台构建及 Windows 最终 amd64/386 ZIP 原生版本、补丁来源、doctor 检查通过。
  • 已从草稿 Release 下载七个最终 ZIP,核对来源提交、包完整性、构建信息、文档与许可证;三种 Windows 二进制中的实际补丁标记均正确。
  • macOS arm64 最终包六组验收通过:基础 CLI/PTY/文件、MCP/jobs/服务回归、目录分享与反向转发、OpenSSH ControlMaster、OpenSSH 转发、SOCKS5/stdio 代理/文件管道。覆盖二进制数据、半关闭、错误路径、访问限制及资源清理。

来源提交:8968561cfe112c55ab3c786e44d826c476202201。上述测试没有证明最低系统版本或 Windows arm64 已完成原生运行验收,也不改变历史崩溃仍未归因的结论。

ShellPier v0.5.0-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 17:08

本版以简单易用为优先:直接传文件、直接用后台任务与转发,增加一条命令即可使用的目录分享和反向转发。

  • 移除普通传输的额外全文件 SHA-256 计算、--verify 和 files checksum;续传所需的内部来源绑定仍自动完成。
  • --skip-existing 直接跳过已有文件,不比较内容;替代 --skip-identical。预览版旧脚本需去掉已删除参数。
  • share --root DIR --output access.json 只共享指定目录,对方从虚拟 / 访问,不需要管理员或额外权限配置。
  • 完整模式默认支持有界 jobs 和 TCP 转发。--allow-jobs=false 与 --allow-forward 仅在需要限制时使用。
  • forward TICKET --reverse --listen 8080 --to 127.0.0.1:3000 在目标电脑回环地址监听,连接控制电脑的服务;兼容原生 OpenSSH -R,支持自动分配端口。
  • files read 支持普通文件的符号链接;目录分享由服务端自动约束实际访问范围。同步精简文档、机器接口和 Agent skill。

工具对比涵盖 OpenSSH、Go 目录根、rsync/rclone、Chisel、sshuttle 等 26 项官方资料;常用例子见命令手册。

验证

  • 源码固定为 ba6270eefeeff06709d035c902927b446c0d64cb;三平台 CI、最低 Go 版本和漏洞检查均通过,包括 race 和 10 轮重复测试。
  • 发行构建生成 Windows amd64/386/arm64、Linux amd64/arm64、macOS amd64/arm64 共 7 个离线包,使用 Go 1.27.2;已下载检查来源提交、构建状态、目标架构、文档与许可。
  • 使用下载包中的 macOS arm64 程序完成真实验收:exec/PTY/持久终端、jobs、文件传输及续传、目录边界与符号链接、skip-existing、默认正反向转发、MCP、原生 OpenSSH/SFTP/ControlMaster/SOCKS/Unix socket,以及普通模式和目录模式的 LaunchAgent 安装、启动、使用、停止和卸载。

已知边界

  • Windows CI 首次执行 10 轮重复测试时,在 Go net/http.Transport.prepareTransportCancel 出现一次 concurrent map writes 崩溃;相同提交重新执行 race、10 轮全套测试和后续检查均通过,本机对应 TLS 用例 100 轮 race 及相关网络用例 5 轮 race 也通过。根因尚未确认,保留该异常记录,不宣称已修复。CI 记录
  • 仍为预览版;Windows 7/8 Legacy 路线、最低系统版本、更多 CPU 和校园代理/热点组合尚未全部实机验证。
  • --root 是 SFTP 文件访问边界,不提供 shell/PTY/jobs/转发,也不是操作系统沙箱;已有硬链接别名和挂载点不在隔离保证内。反向端口只监听 loopback。
  • Linux/Windows 的实际用户服务管理器及各平台登录自启环境仍需实机验收。
  • 发行文件尚未提供操作系统代码签名或 macOS 公证。

ShellPier v0.4.0-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 09:34

本版补充 SSH 连接控制、文件权限及可核对的传输操作,继续保持当前用户权限、票据到期和默认不覆盖行为。

  • 新增连接建立超时与 SSH 应用层保活,可发现直连和中继内的无响应连接;配置可随持久 terminal 保存,断线不自动重放远端操作。
  • 新增服务端 full、sftp、sftp-readonly 访问模式,覆盖 share、host 和用户级服务;受限模式拒绝命令、PTY、jobs 与转发,只读模式限制 SFTP 写入路径。
  • 新增传输 --dry-run、--verify、--preserve-times、--skip-identical 和 --bwlimit,提供只读计划、独立内容校验、秒级 mtime 保留、相同文件跳过与共享限速,继续拒绝覆盖不同内容。
  • OpenSSH 配置支持可调保活与可选 Unix ControlPersist,每张票据使用私有连接复用 socket;保持主机公钥固定及票据到期约束。
  • check、doctor 与 capabilities 识别受限访问模式,区分 SSH 认证成功与远端账户身份检查;同步 schema、补全、MCP 参数和 Agent skill。
  • 扩充 OpenSSH、rsync、rclone、croc、Mosh、autossh、tmate、Tailscale SSH 与 Teleport 的官方资料对比,记录已吸收能力和实现边界。

调研与边界见 工具对比,包含 OpenSSH 逐项差异和 22 项一手来源;参数与例子见命令手册。

验证

  • 对应提交的 CI 全部通过:Go 1.26、漏洞检查,以及 Windows、Linux、macOS 的 vet、race 和重复 10 次测试。

  • 发行构建 对应提交 266f2491719dcc51308d358054d6f18ff5131f5b。下载后的七个 ZIP 已核对 GitHub SHA-256、大小、Go 1.27.2、完整 VCS 提交、未修改构建状态、OS/架构、文档及许可证。

  • 使用下载包中的 macOS arm64 程序完成 exec/PTY/terminal/SFTP、jobs、续传、转发、MCP 的回归;新传输预演/校验/跳过/mtime/限速及只读访问通过实际文件操作验证。

  • 实际 macOS LaunchAgent 完整模式和只读模式均完成计划、安装、启动、连接、停止和卸载,未启用登录自启,测试资源已清理。

  • 系统 OpenSSH 实测两个票据的 ControlMaster 独立复用、到期失效和关闭清理;SOCKS 与本地 Unix socket 转 TCP 的允许/拒绝目标行为符合精确允许列表。

已知边界

  • 仍为预览版。Windows 7/8 独立 Legacy 路线、最低系统版本、更多 CPU 与真实校园代理/热点组合尚未全部实机验证。
  • Linux/Windows 用户服务管理器及不同桌面登录环境的实际启动/自启仍需对应环境验收;macOS 实际用户服务生命周期另列验证结果。
  • 发行文件尚未提供操作系统代码签名或 macOS 公证。
  • SFTP 只读模式不限制可读目录;SSH 保活与连接复用不自动重放命令,不延长授权,也不能把未知结果变成确定失败。
  • 未实现完整组织 CA/SSO/RBAC、目录沙箱、反向监听、UDP 漫游或完整操作审计。原生 OpenSSH 的 SOCKS/本地 Unix socket 入口仍受精确 TCP 目标允许列表限制。

ShellPier v0.3.0-alpha.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 08:30

ShellPier v0.3.0-alpha.1 补齐了临时远程开发与 Agent 操作的主要流程,提供七种系统/架构的离线 ZIP。

新功能

  • 后台任务:host 托管 jobs,SSH 连接断开后继续运行;支持稳定 operation ID、状态查询、日志、等待和取消。
  • 文件传输:目录上传下载、排除规则、单文件断点续传、SHA-256 校验与 JSONL 进度;继续拒绝覆盖已有目标。
  • 端口转发:控制端 loopback 监听,目标端显式配置精确允许列表。
  • Agent 接入:MCP stdio、统一命令 schema、工具白名单、取消与输出限制,提交结果未知时保留 operation ID。
  • 目标与服务管理:私有目标别名、分阶段诊断,以及 Linux/macOS/Windows 用户级服务计划、安装、启动、停止和卸载;登录自启需显式启用。
  • 持久终端:结束原因、等待、输入 ID 去重与查询、可选私有日志;同步中文手册、英文 README、补全与 Agent skill。

验证

  • 发布提交为 196254a7dd70acef88a4336185757ffeb206b3a6,对应 CI 全部通过:Windows/macOS/Linux 的 vet、race、十轮重复测试,以及最低 Go 1.26 和漏洞检查。
  • 发行流程通过。七个下载后的 ZIP 已核对 SHA-256、源码提交、Go 1.27.2、目标架构、许可和离线文档。
  • 使用下载的 macOS ARM64 二进制验证 SSH exec、PTY、持久终端、OpenSSH、文件操作和清理,以及 jobs、目录传输/续传、checksum、进度、别名、诊断、实际 HTTP 转发和终端输入去重/日志。
  • MCP stdio 已实际执行远端命令、查询 job operation 和计算文件校验和;真实 macOS LaunchAgent 完成计划、安装、启动、SSH 连接、状态、重复启动、停止和卸载,测试资源已清理。

使用边界

后台任务及其 operation ID 属于同一 host 进程;终端输入 ID 属于同一控制端 worker。服务不续期票据,不自动恢复崩溃进程或任务。续传使用绑定主机身份与源内容的私有 journal。

macOS 用户服务已在真实 LaunchAgent 上验证完整启停和卸载;Linux/Windows 的真实服务管理器、各平台登录自启、Win7/8 Legacy、最低系统版本和全部 CPU/校园网络组合仍需相应环境验收。当前发行包尚无发行者代码签名或 Apple 公证,因此继续标记为预览版。

使用方式见安装指南、命令手册和兼容性说明。

ShellPier v0.2.0-alpha.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 23:52
  • 新增 shell 交互终端:Unix PTY、Windows ConPTY、尺寸同步、信号与退出清理。
  • 新增 terminal 持久终端控制,支持分次读取、输入、调整尺寸、发信号和关闭;默认最长 3 小时,有界输出与私有状态,退出后可读取最终快照。
  • 新增 exec 精确命令、脚本、环境变量、工作目录、超时和有界 JSON 结果;保留远端退出码。
  • 新增 SFTP files 操作、sessions 会话发现和 capabilities 目标能力查询。
  • 新增离线 schema、全局 JSON 错误、分层命令补全,统一参数解析与管理命令输出。
  • 补充原生终端、进程回收、真实二进制和 Agent 操作测试,更新中文手册与 Agent skill。

验证范围:Windows、Linux、macOS 的 race 与各 10 轮重复测试、最低 Go 版本和依赖漏洞扫描均通过,见 CI。七个发布包的摘要、源码提交、文档和许可证已核对;macOS ARM64 下载包已完成真实 CLI、PTY、持久终端、文件操作、OpenSSH、停止与清理验收。

仍为预览版。一次先前的 Windows 测试运行出现过测试进程提前退出且没有失败测试名,后续多次运行未复现,原因尚未确定。Win7/8 Legacy 路线尚未完成实机验证;完整范围见兼容性说明。

ShellPier v0.1.0-alpha.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 12:21
  • 新增 inspect、check、upload、download、keygen 和 Shell 补全,支持 version --json 与 revoke --timeout。
  • 默认会话时长改为 3 小时;建连和主机重连支持有限重试、指数退避与抖动,不重放远程操作。
  • 简化下载、启动和凭据准备流程,修复 Windows 私有文件权限与 Fish 补全检查。
  • 精简中英文 README,提供双语安全说明、模块指引和扩展开发指南。
  • 增加最低 Go 版本、实际程序退出码、重试恢复与永久错误测试。