Easy SSH Tool:高效管理多服务器的 SSH 工具

管理多服务器的 SSH 连接时,传统的 .ssh/config 文件配置有时难以满足复杂需求。

easySSHTool 是一个基于 Nushell 开发的小工具,能够简化 SSH 连接配置与切换流程,提供格式化输出和安全模式,帮助更便捷地管理多台服务器的连接。

功能简介

  • 配置路径验证:自动检查服务器列表、密钥目录等路径的有效性,确保环境无误。
  • 安全模式:提供可切换的安全模式,在展示服务器信息时遮盖 hostuser 字段,防止敏感数据暴露。
  • 动态命令生成:基于服务器配置生成 SSH 命令,支持多种连接参数。用户只需输入关键字便可连接服务器,无需手动拼接完整命令。
  • 格式化输出:使用符合 Nushell 格式化标准的表格输出,让服务器列表一目了然。
  • 便捷导入:支持通过粘贴 SSH 命令直接导入服务器信息,减少手动添加的繁琐。

安装与配置

  1. 克隆仓库

    1
    git clone https://github.com/jz0ojiang/nu-easySSHTool.git
  2. 在 Nushell 配置文件中加载模块

    1
    source path/to/easySSHTool/easySSHTool.nu
  3. 首次启动:初次运行时会自动创建服务器配置文件 ~/.ssh/servers.json

使用说明

  1. 列出服务器

    1
    est list # 或 est
  2. 连接到服务器

    1
    est connect example_keyword # 或 est example_keyword 省略 connect 直接连接
  3. 新增服务器(从 SSH 命令中解析):

    1
    est add example_keyword "ssh username@newhost.com" [display_name]
  4. 删除服务器

    1
    est remove example_keyword
  5. 安全模式:安全模式默认开启,隐藏敏感信息。可以使用 --unsafe 选项关闭:

    1
    est -u list

核心技术实现

动态命令生成与执行

build 函数根据服务器配置项动态生成 SSH 命令字符串。为避免参数遗漏和拼接格式问题,最终使用 nu -c 拼接完整字符串。相比直接使用闭包的方式,nu -c 的灵活性更高。

信息遮盖的实现

遮盖敏感信息功能确保安全模式下展示的服务器列表中,hostuser 信息自动用 *** 替代,适合在公开场合展示。实现上使用了正则表达式,既能兼容多种 host 格式,又确保所有敏感字段按长度遮盖。

路径解析与默认值

parse-path 函数用于解析和处理身份文件路径,确保无论用户指定绝对路径还是相对路径,都能正确找到身份文件。遇到路径缺失时,自动返回默认配置 default_identity_file

关键字检查与动态补全

command_helpersub_helper 等函数提供了关键字和命令的补全功能,支持在补全列表中标红提醒已被占用的关键字。避免重复关键字的设计确保在执行 add 命令时,用户输入的关键字不会覆盖已有配置。

代码实现的挑战与优化

在 Nushell 中开发 easySSHTool 过程中,补全提示和条件判断的实现是两个关键点。在条件判断上,设计了 IMPLY 函数用于控制安全模式和 unsafe 参数切换,确保逻辑一致。补全实现上,考虑了关键字重复问题,通过 has-flagmatch_or_default 等函数辅助检查用户输入的合法性。遮盖功能通过正则表达式实现了灵活的格式控制,满足安全展示的需求。

总结

easySSHTool 通过动态命令生成、安全模式遮盖、快捷导入等功能,让多服务器 SSH 管理更加便捷。未来可能会加入删除确认提示,并优化路径配置的兼容性,以进一步提升工具的稳定性和使用体验。