A FinalShell export tool for SSH session migration, Termius import, and SecureCRT import.
把 FinalShell 里的 SSH 会话带到别的客户端,而不是从头重建一遍。
finalshell2all 直接读取 FinalShell 根目录中的 config.json 和 conn/:还原分组树、解密会话密码、识别代理与私钥引用,再按目标客户端的能力导出。它适合迁移前盘点,也适合把现有会话长期保存在更通用的格式里。
| 能力 | 检查 FinalShell | Termius CSV | SecureCRT |
|---|---|---|---|
| 分组树 | 是 | 是 | 是 |
| 主机、端口、用户名 | 是 | 是 | 是 |
| 会话密码 | 显式生成报告时可查看 | 可显式写入 CSV | 不导出 |
| 私钥 | 识别引用 | CSV 无对应字段 | 可显式复制并引用 |
| 代理 | 解析并检查 | 警告 | 警告 |
| 端口转发 | 检查数量 | 警告 | 警告 |
目前支持两个导出目标:
- Termius CSV:适合快速导入主机和分组;CSV 本身没有代理、私钥和端口转发字段。
- SecureCRT:生成原生
Sessions/目录树和.ini会话,最适合保留分组、主机、端口、用户名和私钥引用。
需要 Python 3.10+。
python -m pip install -e .默认 FinalShell 根目录通常是:
$env:LOCALAPPDATA\finalshell也可以传入任意包含 config.json 与 conn/ 的 FinalShell 根目录。
python -m finalshell2all inspect "$env:LOCALAPPDATA\finalshell"它会输出会话数、分组数和不能安全处理的配置警告,不会在终端显示密码。
如确有审计需要,可显式生成包含密码的本地报告:
python -m finalshell2all inspect "$env:LOCALAPPDATA\finalshell" --report temp/finalshell-inspection.md --include-passwords报告包含明文密码,应只保存在受控位置。temp/ 默认不会提交到 Git。
python -m finalshell2all export termius-csv "$env:LOCALAPPDATA\finalshell" --output temp/termius-import.csv输出为带 BOM 的 UTF-8 CSV,字段与 Termius 导入示例一致;FinalShell 分组会写入 Groups。端口 22 留空,使用 SSH 默认端口。
默认不写入密码。只有在明确需要且能安全保管 CSV 时才使用:
python -m finalshell2all export termius-csv "$env:LOCALAPPDATA\finalshell" --output temp/termius-with-passwords.csv --include-passwordspython -m finalshell2all export securecrt "$env:LOCALAPPDATA\finalshell" --output temp/securecrt --include-private-keys输出目录必须为空。导出完成后,关闭 SecureCRT,将 temp/securecrt 设为其配置目录,或将其中的 Sessions/ 与 Keys/ 复制到现有配置目录。
Sessions/ 保留 FinalShell 分组和连接信息。--include-private-keys 会在 Keys/ 原样写入被引用的 PEM 或 PPK 私钥,并让会话通过 ${VDS_CONFIG_PATH}/Keys/... 引用它。该选项会导出敏感密钥材料,只应写入受控目录。
SecureCRT 导出不会迁移会话密码。这是有意的安全策略,不是待补的格式缺陷:优先使用已迁移的私钥认证,而不复制或伪造 SecureCRT 的密码字段。
当前最重要的边界是代理与端口转发:工具会识别并警告它们,但不会生成未经验证的目标配置。目标客户端的代理、跳板和转发格式差异很大,错误迁移比明确提示更危险。
后续方向:
- 为 SecureCRT 增加经真实配置样本验证的代理 Profile 映射。
- 在取得 FinalShell 端口转发样本后,增加 SecureCRT 的本地、远程和动态转发映射。
- 增加 MobaXterm 导出器,重点覆盖会话分组、私钥与跳板配置。
- 增加 PuTTY 导出器,处理注册表会话和 PPK 私钥。
- 完善 CLI:自动发现 FinalShell 根目录、列出可用格式、交互选择导出目标,并统一输出迁移摘要。
密码迁移不在默认路线中;若未来确有需求,只会作为显式开关,并在目标客户端版本上完成写入与登录验证后提供。
运行测试:
python -m pip install -e ".[dev]"
python -m pytest会话密码只在进程内存中处理。请勿提交 FinalShell 根目录、导出报告、CSV 或私钥;项目已忽略 data/、temp/ 和本机 Termius 样例文件。