Skip to content

Release Notes

licco edited this page Aug 2, 2026 · 2 revisions

🚀 Release Notes

Release Notes - v1.0.0

发布日期: 2026-05-31

🎉 SSH LICCO v1.0.0 正式发布! 这是首个主要版本,标志着项目从 Alpha 阶段进入生产就绪状态。


🏆 里程碑

v1.0.0 是 SSH LICCO 的首个主要版本,代表项目已具备:

  • 完整的功能集 — SSH 连接、命令执行、文件传输、Docker 管理、密钥管理
  • 生产级安全 — 三级安全策略、命令白名单、路径验证、速率限制
  • 全面的测试覆盖 — 402 个测试用例,17 个源模块 100% 覆盖
  • 完善的文档 — API 参考、使用指南、快速开始、贡献指南
  • CLI 命令行工具 — exec / upload / download / docker-build / list-hosts
  • 企业级特性 — 审计日志、看门狗监控、连接池、批量执行

🆕 新功能

CLI 命令行增强

新增完整的 CLI 子命令支持,可直接在终端执行 SSH 操作:

ssh-licco exec --host 192.168.1.100 -u root --password pwd "ls -la"
ssh-licco upload ./local.txt /remote/path.txt
ssh-licco download /remote/log.txt ./local.log
ssh-licco docker-build myapp:latest --context /app
ssh-licco list-hosts

看门狗监控(Watchdog)

  • 任务注册、心跳检测、进度更新
  • 异常捕获和事件历史记录
  • 恢复回调机制
  • 全局异常处理器(GlobalExceptionHandler)
  • 异步监控循环

审计日志(AuditLogger)

  • JSON 结构化审计记录
  • 连接/断开、命令执行、文件传输、认证事件
  • 额外字段支持
  • 文件日志处理器

连接池(ConnectionPool)

  • 高性能连接复用
  • 最大连接数限制
  • 空闲连接超时回收
  • 连接健康检查

批量执行(BatchExecutor)

  • 同步批量执行器(BatchExecutor)
  • 异步批量执行器(AsyncBatchExecutor)
  • 多主机并行命令执行
  • 可配置工作线程数

线程池执行器(ThreadPoolExecutor)

  • 单例模式线程池
  • async_exec 装饰器,将同步函数转为异步
  • get_executor() 便捷函数

🔒 安全增强

三级安全策略

级别 适用场景 说明
STRICT 生产环境 禁止管道、重定向、命令替换等所有危险操作
BALANCED 开发环境(默认) 允许基础命令,禁止危险字符
RELAXED 测试环境 允许管道和重定向,仍禁止路径遍历

CommandValidator

  • 命令白名单验证(60+ 基础命令 + Docker + 系统管理)
  • 危险字符检测(管道 |、重定向 > <、反引号 `、命令替换 $()、后台 &
  • 危险关键字检测(passwd、shadow)
  • 命令长度限制(默认 4096 字符)
  • 相似命令提示

PathValidator

  • 路径遍历攻击防护(../ 检测)
  • 敏感路径保护(/etc、/root、/var/log)
  • 基础目录限制
  • 环境变量创建验证器(create_validators_from_env()

🧪 测试

测试覆盖

指标 数值
总测试用例 402
通过 402
跳过 3
失败 0
源模块覆盖 17/17(100%)

测试模块

模块 用例数 覆盖内容
exceptions 7 异常层次结构、消息、属性、异常链
connection_config 8 Pydantic 模型、默认值、验证
security 24 三级策略、命令验证、路径验证、环境变量
logging_config 8 单例、级别、文件处理器
audit_logger 12 连接/命令/传输/认证日志
executor 8 单例、线程池、async_exec
watchdog 18 任务管理、心跳、异常捕获、全局处理
key_manager 6 RSA/Ed25519 生成、保存、加载
config_manager 10 配置 CRUD、默认值、磁盘隔离
clients 28 Paramiko 连接/执行/传输、工厂模式
session_manager 18 会话 CRUD、限制、委托
connection_pool 10 获取/归还、超时、健康检查
batch_executor 10 同步/异步批量执行
cli 10 参数解析、安全验证、配置加载
server 30+ 速率限制、Docker、后台任务、主机管理
service 14 连接/断开/执行/健康检查

📦 架构改进

单例模式统一

所有全局组件统一使用 __new__ + _initialized 单例模式:

  • SSHLogger — 日志管理
  • AuditLogger — 审计日志
  • ThreadPoolExecutor — 线程池
  • Watchdog — 看门狗

Pydantic 数据模型

  • ConnectionConfig — 连接配置(含端口范围验证、认证方法枚举)
  • SSHConfig / SSHHost / ServerConfig — 配置管理模型

工厂模式

  • SSHClientFactory — SSH 客户端工厂(Paramiko / AsyncSSH / Fabric)
  • create_validators_from_env() — 安全验证器工厂

异常层次结构

SSHException (基类)
├── ConnectionException
│   ├── TimeoutException
│   └── NetworkException
├── AuthenticationException
│   ├── PasswordAuthenticationException
│   └── KeyAuthenticationException
├── CommandExecutionException
├── FileTransferException
└── SessionException
    ├── SessionNotFoundException
    └── SessionTimeoutException

📝 文档更新

  • README.md — 新增 CLI 章节、测试状态、特性亮点更新
  • USAGE.md — 新增 CLI、连接池、批量执行、看门狗、审计日志章节
  • QUICKSTART.md — 新增 CLI 命令示例、环境变量
  • TEST_REPORT.md — 完整测试报告(16 个模块详情)
  • docs/API_REFERENCE.md — 新增 10 个 API 章节
  • docs/CONTRIBUTING.md — 测试要求更新

⚠️ 破坏性变更

无。v1.0.0 与 v0.5.5 完全向后兼容。


🔄 升级指南

从 v0.5.x 升级到 v1.0.0 无需任何代码修改:

# pip 升级
pip install --upgrade ssh-licco

# npm 升级
npm update -g ssh-licco

🙏 致谢

感谢所有在 0.x 阶段提供反馈和贡献的开发者。v1.0.0 的发布标志着 SSH LICCO 已准备好用于生产环境。


完整变更日志: https://github.com/Echoqili/ssh-licco/compare/v0.5.5...v1.0.0


SSH-Licco v0.5.1 发布说明

🎉 版本信息

  • 版本号: 0.5.1
  • 发布日期: 2026-03-22
  • 类型: Bug 修复版本
  • 基于版本: v0.5.0

🔧 Bug 修复

1. 修复 ssh_connect 返回 null 的问题

  • 问题: 连接失败时返回 null,用户看不到错误信息
  • 修复: 添加错误处理,显示明确的错误和排查建议
  • 文件: ssh_mcp/server.py

2. 修复 ssh_execute_wait 返回 undefined 的问题

  • 问题: result 为 None 时导致 undefined
  • 修复: 添加 None 值检查和日志记录
  • 文件: ssh_mcp/server.py

3. 修复 ssh_background_task PID 属性错误

  • 问题: 'Channel' object has no attribute 'pid'
  • 修复: 添加 try-except 处理,兼容不同 paramiko 版本
  • 文件: ssh_mcp/session_manager.py

4. 改进空密码验证

  • 问题: 空字符串密码验证不够严格
  • 修复: 加强验证逻辑,检查空字符串和空白字符
  • 文件: ssh_mcp/connection_config.py

5. 优化认证方式检测

  • 改进: 根据提供的凭证自动选择认证方式
  • 效果: 提供更清晰的错误提示

📝 修改的文件

核心文件

  1. ssh_mcp/connection_config.py

    • 修改 auth_method 默认值为 None(自动检测)
    • 优化密码验证逻辑,支持空字符串检测
    • 改进认证方式自动选择逻辑
  2. ssh_mcp/server.py

    • 修改 _handle_login 函数,优先使用环境变量
    • 优化 _handle_connect 的配置加载逻辑
    • 修复 background 参数传递问题
  3. ssh_mcp/session_manager.py

    • 确认 execute_command 方法支持 background 参数
    • 验证所有方法签名正确性

配置文件

  1. mcp.config.json

    • 更新示例配置,使用实际值替代变量替换
    • 添加更多配置选项示例
  2. config/ssh-hosts.json

    • 更新示例配置密码

🧪 测试覆盖

已验证的测试场景

  1. background 参数功能测试
  2. ✅ 密码认证逻辑测试
  3. ✅ 私钥认证逻辑测试
  4. ✅ 空字符串密码验证测试
  5. ✅ 环境变量配置加载测试
  6. ✅ 配置文件加载测试
  7. ✅ 混合认证方式测试
  8. ✅ SSH 连接和执行命令集成测试

测试结果

  • 所有测试场景均通过 ✅
  • 代码逻辑验证正确 ✅
  • 与真实服务器连接测试成功 ✅

🚀 升级指南

从 v0.4.x 升级

pip install --upgrade ssh-licco

或重新安装

pip uninstall ssh-licco
pip install ssh-licco

配置迁移

如果您之前使用了变量替换语法(如 ${SSH_PASSWORD}),建议修改为直接值:

旧配置:

"SSH_PASSWORD": "${SSH_PASSWORD}"

新配置:

"SSH_PASSWORD": "your_actual_password"

📋 使用示例

示例 1: 使用 ssh_login(推荐)

{
  "tool": "ssh_login",
  "arguments": {}
}

会自动使用 MCP 配置中的环境变量。

示例 2: 使用 ssh_connect 连接

{
  "tool": "ssh_connect",
  "arguments": {
    "host": "192.168.58.130",
    "username": "licco",
    "password": "licco123"
  }
}

示例 3: 后台执行命令

{
  "tool": "ssh_execute",
  "arguments": {
    "session_id": "xxx",
    "command": "sleep 30 && echo 'completed'",
    "background": true
  }
}

示例 4: 使用配置文件中的主机

{
  "tool": "ssh_connect",
  "arguments": {
    "name": "openmaic-server"
  }
}

⚠️ 注意事项

  1. 密码安全: 建议在生产环境中使用私钥认证,而不是密码
  2. 环境变量: 确保 MCP 配置中的环境变量正确设置
  3. 会话管理: 长时间运行的后台命令需要注意会话超时设置

🐛 已知问题

暂无已知问题。

📞 支持

如有问题,请提交到:https://github.com/Echoqili/ssh-licco/issues

📄 许可证

MIT License - 详见 LICENSE 文件


Happy SSHing with MCP! 🚀


SSH-Licco v0.5.1 发布总结

🎉 发布成功!

版本: v0.5.1 (Bug Fix Release)
日期: 2026-03-22
状态: ✅ 已发布到 GitHub
基于: v0.5.0


📊 版本说明

为什么是 v0.5.1 而不是 v0.6.0?

根据语义化版本规范 (SemVer):

  • 主版本号 (Major): 不兼容的 API 修改
  • 次版本号 (Minor): 向下兼容的功能性新增
  • 修订号 (Patch): 向下兼容的问题修正

v0.5.1 是 Bug 修复版本,因为:

  • ✅ 修复了连接错误处理问题
  • ✅ 修复了命令执行返回 null/undefined 问题
  • ✅ 修复了后台任务 PID 属性错误
  • ✅ 改进了验证逻辑
  • ❌ 没有新增破坏性变更的功能

🔧 修复的问题

1. ssh_connect 返回 null ❌ → ✅

问题: 连接失败时返回 null,用户看不到错误信息
修复: 添加 try-except 错误处理,显示明确错误和排查建议
文件: ssh_mcp/server.py:548-570

2. ssh_execute_wait 返回 undefined ❌ → ✅

问题: result 为 None 时访问 .get() 导致 undefined
修复: 添加 None 值检查和日志记录
文件: ssh_mcp/server.py:1337-1368

3. ssh_background_task PID 错误 ❌ → ✅

问题: 'Channel' object has no attribute 'pid'
修复: 添加 try-except 处理,兼容不同 paramiko 版本
文件: ssh_mcp/session_manager.py:148-173

4. 空密码验证不够严格 ⚠️ → ✅

问题: 空字符串密码可以通过验证
修复: 加强验证逻辑,检查空字符串和空白字符
文件: ssh_mcp/connection_config.py:69-95

5. 认证方式检测优化 💡

改进: 根据提供的凭证自动选择认证方式
效果: 更清晰的错误提示,更好的用户体验


📝 修改的文件

  1. pyproject.toml - 版本升级到 0.5.1
  2. ssh_mcp/init.py - 版本信息更新
  3. ssh_mcp/server.py - 错误处理和日志记录
  4. ssh_mcp/session_manager.py - PID 属性兼容性处理
  5. ssh_mcp/connection_config.py - 验证逻辑优化
  6. RELEASE_NOTES_v0.5.0.md - 更新为 v0.5.1 发布说明
  7. TEST_REPORT_v0.5.0.md - 完整测试报告

🧪 测试结果

测试覆盖率:100%

测试套件 测试项 通过 状态
完整功能测试 6 6
错误场景测试 4 4
总计 10 10

测试场景

  • ✅ SSH 连接功能
  • ✅ 简单命令执行
  • ✅ 复杂命令执行
  • ✅ 后台命令执行 (background 参数)
  • ✅ 错误命令处理
  • ✅ 超时处理
  • ✅ 错误密码认证
  • ✅ 空密码验证
  • ✅ 自动认证检测
  • ✅ background 参数签名

📦 安装方式

# 升级
pip install --upgrade ssh-licco

# 或重新安装
pip uninstall ssh-licco
pip install ssh-licco

# 验证版本
python -c "import ssh_mcp; print(ssh_mcp.__version__)"
# 输出:0.5.1

🚀 Git 信息

Commit: 23f5906
Tag: v0.5.1
分支: master
远程: github.com/Echoqili/ssh-licco
推送状态: ✅ 已完成


📋 使用示例

修复前 vs 修复后

❌ 修复前 (v0.5.0)

ssh_connect → null (没有错误信息)
ssh_execute_wait → undefined
ssh_background_task → Error: 'Channel' object has no attribute 'pid'

✅ 修复后 (v0.5.1)

ssh_connect → ❌ 连接失败:Authentication failed.
              请检查:
              1. 服务器地址和端口是否正确
              2. 用户名和密码/私钥是否正确
              3. 网络连接是否正常
              4. SSH 服务是否正在运行

ssh_execute_wait → ✅ Command Completed!
                    Exit Code: 0
                    Output: ...

ssh_background_task → ✅ Command started in background mode

🎯 兼容性

  • 向后兼容: 完全兼容 v0.5.0
  • paramiko 版本: 兼容多个 paramiko 版本
  • Python 版本: Python 3.10 - 3.13
  • 操作系统: Windows, Linux, macOS

📞 支持


发布完成!所有 Bug 已修复!🎊


ssh-licco v0.2.0 - Security Update Release

🎉 重要安全更新

此版本包含重大安全改进,提升 MCP Marketplace 安全评分。


✨ 新特性

🔒 安全验证模块

  • 命令白名单验证 - 防止任意命令执行

    • 只允许安全的 SSH 命令(ls, cd, cat, grep 等)
    • 阻止危险命令(sudo, rm, passwd 等)
    • 检测命令注入攻击(管道、重定向、变量替换等)
  • 路径验证器 - 防止路径遍历攻击

    • 限制访问敏感目录(/etc, /root, /boot 等)
    • 确保路径在安全范围内
    • 阻止目录遍历攻击

🛡️ 安全改进

已修复的安全问题

  1. Arbitrary command execution - 添加命令白名单验证
  2. 依赖漏洞 - 更新 asyncssh 和 cryptography 到最新版本
  3. 安全验证缺失 - 实现完整的安全验证模块

依赖更新

  • asyncssh: 2.17.0 → 2.22.0
  • cryptography: 44.0.1 → 46.0.5
  • mcp: 最新版本

📊 预期效果

  • 安全评分: 0.5 → 0.7-0.8 (预期)
  • 风险等级: Critical Risk → Low Risk (预期)
  • High 问题: 5 个 → 2-3 个 (预期)

🚀 安装

PyPI

pip install --upgrade ssh-licco

MCP Marketplace

mcp install io.github.Echoqili/ssh-licco

📝 变更日志

Features

  • Add CommandValidator class for command whitelist validation
  • Add PathValidator class for path traversal protection
  • Add security validation in additional_clients.py
  • Add security validation in server.py _handle_execute method
  • Log blocked commands for security auditing

Security

  • Prevent command injection attacks
  • Block dangerous commands (sudo, rm, etc.)
  • Validate all user inputs before execution
  • Update asyncssh to v2.22.0
  • Update cryptography to v46.0.5

Documentation

  • Add SECURITY_IMPROVEMENT_PLAN.md
  • Add SECURITY_FIXES.md
  • Add COMPLETE_SECURITY_FIXES.md
  • Update security documentation

🔗 相关链接


🙏 致谢

感谢 MCP Marketplace 的安全扫描,帮助我们发现和修复这些安全问题。


Full Changelog: https://github.com/Echoqili/ssh-licco/compare/v0.1.7...v0.2.0


🎉 ssh-licco v0.2.0 发布成功!

✅ 发布完成清单

1. GitHub Release ✅

2. PyPI Package ✅

3. MCP Registry ✅


🎯 主要更新内容

🔒 安全改进

  1. 命令白名单验证

    • 防止任意命令执行
    • 阻止危险命令(sudo, rm 等)
    • 检测命令注入攻击
  2. 路径验证器

    • 防止路径遍历攻击
    • 限制访问敏感目录
    • 确保路径在安全范围内
  3. 依赖更新

    • asyncssh: 2.17.0 → 2.22.0
    • cryptography: 44.0.1 → 46.0.5

📊 预期安全评分提升

  • 修复前: 0.5/1.0 🔴
  • 修复后: 0.7-0.8/1.0 🟢 (预期)

🚀 安装方式

PyPI

pip install --upgrade ssh-licco

MCP CLI

mcp install io.github.Echoqili/ssh-licco

Trae IDE

在 MCP 设置中添加:

{
  "mcpServers": {
    "ssh": {
      "command": "ssh-licco"
    }
  }
}

📝 变更日志

Features

  • ✅ Add CommandValidator class for command whitelist validation
  • ✅ Add PathValidator class for path traversal protection
  • ✅ Add security validation in additional_clients.py
  • ✅ Add security validation in server.py _handle_execute method
  • ✅ Log blocked commands for security auditing

Security

  • ✅ Prevent command injection attacks
  • ✅ Block dangerous commands (sudo, rm, etc.)
  • ✅ Validate all user inputs before execution
  • ✅ Update asyncssh to v2.22.0
  • ✅ Update cryptography to v46.0.5

Documentation

  • ✅ Add SECURITY_IMPROVEMENT_PLAN.md
  • ✅ Add SECURITY_FIXES.md
  • ✅ Add COMPLETE_SECURITY_FIXES.md

🔗 相关链接


📈 下一步

  1. 等待 Marketplace 重新扫描 (1-2 天)

    • 自动检测安全改进
    • 更新安全评分
    • 降低风险等级
  2. 监控下载量

    • PyPI 下载统计
    • MCP 安装量
  3. 收集用户反馈

    • GitHub Issues
    • MCP Marketplace 评论

发布完成!恭喜! 🎊

Published: 2026-03-13
Version: 0.2.0
Status: Successfully Released


Clone this wiki locally