Skip to content

TaskSSH 2.1.0

Choose a tag to compare

@melvek melvek released this 26 Sep 02:31
· 19 commits to main since this release

[2.1.0] - 2026-09-25

Breaking Changes

  • vault 密钥外置:加密密钥不再硬编码在二进制中
    • 默认交互输入
    • 支持 --secret-key-file 指定密钥文件(普通文本或可执行脚本),默认位置 ~/.taskssh/vault-key
    • 旧密文无法解密,需用 taskssh encrypt 重新加密
    • 移除 push -B/--backup:不再支持覆盖前自动备份
    • 需要备份时,在任务里增加 command 步骤执行备份命令
    • 移除 fetch -F/--force 和 fetch -B/--backup:
      • fetch 默认覆盖本地已存在文件
    • 强制密码加密:清单文件中的 password 必须是 taskssh encrypt 生成的密文

Add

  • script 任务:新增 script action,将本地 shell 脚本上传到远程主机并执行
    • CLI:taskssh script <host> -f <file> [-d <dest>] [-R] [-F]
    • 清单:action: script,参数 file / dest / remove / force
    • 默认上传到 /tmp,执行后可选删除,覆盖已存在文件可选
  • push 目录上传:push 支持目录
    • 不传 -z:递归逐文件上传,不依赖远程工具
    • 传 -z:本地 zip 打包上传,远程 unzip 解包,依赖远程 unzip
  • fetch 目录下载:fetch 支持目录
    • 不传 -z:递归逐文件下载,不依赖远程工具
    • 传 -z:远程 zip -r 打包,下载后本地 archive/zip 解压,依赖远程 zip
    • 新增 -T/--tmp-dir:指定远程临时目录,默认 /tmp,仅 -z 时生效
  • 连接复用:每台主机连接一次,执行完整条任务后关闭,连接次数从「主机数 × step 数」降为「主机数」
  • --connect-timeout:新增连接超时配置,单位秒,默认 10
  • --secret-key-file / -V:指定密钥文件或可执行脚本
    • 普通文本:内容即密钥
    • 可执行文件:执行输出作为密钥
    • 支持 ~ 展开
  • --dry-run:新增 dry-run 模式,连接远程但不执行命令和文件操作
    • 输出每台主机每个 step 的解析后参数
    • 跳过执行前确认,不输出执行摘要
  • CLI 变量注入:新增 -D/--define 参数
    • 格式:-D key=value,可重复
    • 优先级最高,覆盖 global_vars / 组 vars / 主机 Extra
    • key 和 value 均做 trim
    • 拒绝覆盖保留变量(date / execId)
    • 用法示例:taskssh revert web_server -D revert_id=20260925_0K8X7A2B
  • 主机查找增强:支持按组名、组名/主机名、组内主机名查找
    • 组名精确匹配:展开组内所有主机
    • 组名/主机名 格式:精确到单台主机,如 web_server/web_1
    • 组内主机名唯一匹配:如 web_1,自动定位到所属组
    • 多组同名主机时报错,并提示使用 组名/主机名 格式
    • 独立主机名或 IP 仍按原逻辑处理

Changed

  • 输出:单 step 任务不再输出 [STEP 1/1] 行
  • push:-f 的说明从「文件」改为「文件或目录」
  • encrypt:交互输入密钥两次(输入 + 确认)
  • decrypt:交互输入密钥一次
  • fetch:默认覆盖本地文件,不再需要 -F
  • script -R/--remove:短选项从 -R 改为 -r

Performance

  • SFTP 会话复用:每个 Client 持有复用的 SFTP 会话,避免每次文件操作都创建新 channel
    • 影响 push / fetch 目录场景,一次任务期间的 SFTP channel 创建次数从数百次降为 1 次
    • 跨机房网络下收益更明显

Fix

  • 修复变量加载顺序错误,导致全局参数意外覆盖了服务器参数的错误
  • 修复FetchAvtion本地路径解析异常导致下载失败的问题