-
Notifications
You must be signed in to change notification settings - Fork 0
Release Notes
发布日期: 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 子命令支持,可直接在终端执行 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- 任务注册、心跳检测、进度更新
- 异常捕获和事件历史记录
- 恢复回调机制
- 全局异常处理器(GlobalExceptionHandler)
- 异步监控循环
- JSON 结构化审计记录
- 连接/断开、命令执行、文件传输、认证事件
- 额外字段支持
- 文件日志处理器
- 高性能连接复用
- 最大连接数限制
- 空闲连接超时回收
- 连接健康检查
- 同步批量执行器(BatchExecutor)
- 异步批量执行器(AsyncBatchExecutor)
- 多主机并行命令执行
- 可配置工作线程数
- 单例模式线程池
-
async_exec装饰器,将同步函数转为异步 -
get_executor()便捷函数
| 级别 | 适用场景 | 说明 |
|---|---|---|
| STRICT | 生产环境 | 禁止管道、重定向、命令替换等所有危险操作 |
| BALANCED | 开发环境(默认) | 允许基础命令,禁止危险字符 |
| RELAXED | 测试环境 | 允许管道和重定向,仍禁止路径遍历 |
- 命令白名单验证(60+ 基础命令 + Docker + 系统管理)
- 危险字符检测(管道
|、重定向><、反引号`、命令替换$()、后台&) - 危险关键字检测(passwd、shadow)
- 命令长度限制(默认 4096 字符)
- 相似命令提示
- 路径遍历攻击防护(
../检测) - 敏感路径保护(/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— 看门狗
-
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
- 版本号: 0.5.1
- 发布日期: 2026-03-22
- 类型: Bug 修复版本
- 基于版本: v0.5.0
- 问题: 连接失败时返回 null,用户看不到错误信息
- 修复: 添加错误处理,显示明确的错误和排查建议
-
文件:
ssh_mcp/server.py
- 问题: result 为 None 时导致 undefined
- 修复: 添加 None 值检查和日志记录
-
文件:
ssh_mcp/server.py
-
问题:
'Channel' object has no attribute 'pid' - 修复: 添加 try-except 处理,兼容不同 paramiko 版本
-
文件:
ssh_mcp/session_manager.py
- 问题: 空字符串密码验证不够严格
- 修复: 加强验证逻辑,检查空字符串和空白字符
-
文件:
ssh_mcp/connection_config.py
- 改进: 根据提供的凭证自动选择认证方式
- 效果: 提供更清晰的错误提示
-
ssh_mcp/connection_config.py
- 修改
auth_method默认值为None(自动检测) - 优化密码验证逻辑,支持空字符串检测
- 改进认证方式自动选择逻辑
- 修改
-
ssh_mcp/server.py
- 修改
_handle_login函数,优先使用环境变量 - 优化
_handle_connect的配置加载逻辑 - 修复
background参数传递问题
- 修改
-
ssh_mcp/session_manager.py
- 确认
execute_command方法支持background参数 - 验证所有方法签名正确性
- 确认
-
mcp.config.json
- 更新示例配置,使用实际值替代变量替换
- 添加更多配置选项示例
-
config/ssh-hosts.json
- 更新示例配置密码
- ✅
background参数功能测试 - ✅ 密码认证逻辑测试
- ✅ 私钥认证逻辑测试
- ✅ 空字符串密码验证测试
- ✅ 环境变量配置加载测试
- ✅ 配置文件加载测试
- ✅ 混合认证方式测试
- ✅ SSH 连接和执行命令集成测试
- 所有测试场景均通过 ✅
- 代码逻辑验证正确 ✅
- 与真实服务器连接测试成功 ✅
pip install --upgrade ssh-liccopip uninstall ssh-licco
pip install ssh-licco如果您之前使用了变量替换语法(如 ${SSH_PASSWORD}),建议修改为直接值:
旧配置:
"SSH_PASSWORD": "${SSH_PASSWORD}"新配置:
"SSH_PASSWORD": "your_actual_password"{
"tool": "ssh_login",
"arguments": {}
}会自动使用 MCP 配置中的环境变量。
{
"tool": "ssh_connect",
"arguments": {
"host": "192.168.58.130",
"username": "licco",
"password": "licco123"
}
}{
"tool": "ssh_execute",
"arguments": {
"session_id": "xxx",
"command": "sleep 30 && echo 'completed'",
"background": true
}
}{
"tool": "ssh_connect",
"arguments": {
"name": "openmaic-server"
}
}- 密码安全: 建议在生产环境中使用私钥认证,而不是密码
- 环境变量: 确保 MCP 配置中的环境变量正确设置
- 会话管理: 长时间运行的后台命令需要注意会话超时设置
暂无已知问题。
如有问题,请提交到:https://github.com/Echoqili/ssh-licco/issues
MIT License - 详见 LICENSE 文件
Happy SSHing with MCP! 🚀
版本: v0.5.1 (Bug Fix Release)
日期: 2026-03-22
状态: ✅ 已发布到 GitHub
基于: v0.5.0
根据语义化版本规范 (SemVer):
- 主版本号 (Major): 不兼容的 API 修改
- 次版本号 (Minor): 向下兼容的功能性新增
- 修订号 (Patch): 向下兼容的问题修正
v0.5.1 是 Bug 修复版本,因为:
- ✅ 修复了连接错误处理问题
- ✅ 修复了命令执行返回 null/undefined 问题
- ✅ 修复了后台任务 PID 属性错误
- ✅ 改进了验证逻辑
- ❌ 没有新增破坏性变更的功能
问题: 连接失败时返回 null,用户看不到错误信息
修复: 添加 try-except 错误处理,显示明确错误和排查建议
文件: ssh_mcp/server.py:548-570
问题: result 为 None 时访问 .get() 导致 undefined
修复: 添加 None 值检查和日志记录
文件: ssh_mcp/server.py:1337-1368
问题: 'Channel' object has no attribute 'pid'
修复: 添加 try-except 处理,兼容不同 paramiko 版本
文件: ssh_mcp/session_manager.py:148-173
问题: 空字符串密码可以通过验证
修复: 加强验证逻辑,检查空字符串和空白字符
文件: ssh_mcp/connection_config.py:69-95
改进: 根据提供的凭证自动选择认证方式
效果: 更清晰的错误提示,更好的用户体验
- pyproject.toml - 版本升级到 0.5.1
- ssh_mcp/init.py - 版本信息更新
- ssh_mcp/server.py - 错误处理和日志记录
- ssh_mcp/session_manager.py - PID 属性兼容性处理
- ssh_mcp/connection_config.py - 验证逻辑优化
- RELEASE_NOTES_v0.5.0.md - 更新为 v0.5.1 发布说明
- TEST_REPORT_v0.5.0.md - 完整测试报告
| 测试套件 | 测试项 | 通过 | 状态 |
|---|---|---|---|
| 完整功能测试 | 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.1Commit: 23f5906
Tag: v0.5.1
分支: master
远程: github.com/Echoqili/ssh-licco
推送状态: ✅ 已完成
ssh_connect → null (没有错误信息)
ssh_execute_wait → undefined
ssh_background_task → Error: 'Channel' object has no attribute 'pid'
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
- GitHub: https://github.com/Echoqili/ssh-licco
- Issues: https://github.com/Echoqili/ssh-licco/issues
- 版本: https://github.com/Echoqili/ssh-licco/releases/tag/v0.5.1
发布完成!所有 Bug 已修复!🎊
此版本包含重大安全改进,提升 MCP Marketplace 安全评分。
-
命令白名单验证 - 防止任意命令执行
- 只允许安全的 SSH 命令(ls, cd, cat, grep 等)
- 阻止危险命令(sudo, rm, passwd 等)
- 检测命令注入攻击(管道、重定向、变量替换等)
-
路径验证器 - 防止路径遍历攻击
- 限制访问敏感目录(/etc, /root, /boot 等)
- 确保路径在安全范围内
- 阻止目录遍历攻击
- Arbitrary command execution - 添加命令白名单验证
- 依赖漏洞 - 更新 asyncssh 和 cryptography 到最新版本
- 安全验证缺失 - 实现完整的安全验证模块
-
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 个 (预期)
pip install --upgrade ssh-liccomcp install io.github.Echoqili/ssh-licco- Add
CommandValidatorclass for command whitelist validation - Add
PathValidatorclass for path traversal protection - Add security validation in
additional_clients.py - Add security validation in
server.py_handle_executemethod - Log blocked commands for security auditing
- 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
- Add
SECURITY_IMPROVEMENT_PLAN.md - Add
SECURITY_FIXES.md - Add
COMPLETE_SECURITY_FIXES.md - Update security documentation
- GitHub: https://github.com/Echoqili/ssh-licco
- PyPI: https://pypi.org/project/ssh-licco/
- MCP Registry: https://registry.modelcontextprotocol.io/servers/io.github.Echoqili/ssh-licco
感谢 MCP Marketplace 的安全扫描,帮助我们发现和修复这些安全问题。
Full Changelog: https://github.com/Echoqili/ssh-licco/compare/v0.1.7...v0.2.0
- 版本: v0.2.0
- 名称: Security Update
- URL: https://github.com/Echoqili/ssh-licco/releases/tag/v0.2.0
- 状态: ✅ 已创建
- 版本: 0.2.0
- URL: https://pypi.org/project/ssh-licco/0.2.0/
- 状态: ✅ 已发布
- 服务器名称: io.github.Echoqili/ssh-licco
- 版本: 0.2.0
- URL: https://registry.modelcontextprotocol.io/servers/io.github.Echoqili/ssh-licco
- 状态: ✅ 已发布
-
命令白名单验证
- 防止任意命令执行
- 阻止危险命令(sudo, rm 等)
- 检测命令注入攻击
-
路径验证器
- 防止路径遍历攻击
- 限制访问敏感目录
- 确保路径在安全范围内
-
依赖更新
- asyncssh: 2.17.0 → 2.22.0
- cryptography: 44.0.1 → 46.0.5
- 修复前: 0.5/1.0 🔴
- 修复后: 0.7-0.8/1.0 🟢 (预期)
pip install --upgrade ssh-liccomcp install io.github.Echoqili/ssh-licco在 MCP 设置中添加:
{
"mcpServers": {
"ssh": {
"command": "ssh-licco"
}
}
}- ✅ Add
CommandValidatorclass for command whitelist validation - ✅ Add
PathValidatorclass for path traversal protection - ✅ Add security validation in
additional_clients.py - ✅ Add security validation in
server.py_handle_executemethod - ✅ Log blocked commands for security auditing
- ✅ 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
- ✅ Add
SECURITY_IMPROVEMENT_PLAN.md - ✅ Add
SECURITY_FIXES.md - ✅ Add
COMPLETE_SECURITY_FIXES.md
- GitHub Release: https://github.com/Echoqili/ssh-licco/releases/tag/v0.2.0
- PyPI: https://pypi.org/project/ssh-licco/0.2.0/
- MCP Registry: https://registry.modelcontextprotocol.io/servers/io.github.Echoqili/ssh-licco
- GitHub: https://github.com/Echoqili/ssh-licco
-
等待 Marketplace 重新扫描 (1-2 天)
- 自动检测安全改进
- 更新安全评分
- 降低风险等级
-
监控下载量
- PyPI 下载统计
- MCP 安装量
-
收集用户反馈
- GitHub Issues
- MCP Marketplace 评论
发布完成!恭喜! 🎊
Published: 2026-03-13
Version: 0.2.0
Status: Successfully Released