Easy SSH Tool:高效管理多服务器的 SSH 工具
Easy SSH Tool:高效管理多服务器的 SSH 工具
管理多服务器的 SSH 连接时,传统的 .ssh/config
文件配置有时难以满足复杂需求。
easySSHTool
是一个基于 Nushell 开发的小工具,能够简化 SSH 连接配置与切换流程,提供格式化输出和安全模式,帮助更便捷地管理多台服务器的连接。
功能简介
- 配置路径验证:自动检查服务器列表、密钥目录等路径的有效性,确保环境无误。
- 安全模式:提供可切换的安全模式,在展示服务器信息时遮盖
host
和user
字段,防止敏感数据暴露。 - 动态命令生成:基于服务器配置生成 SSH 命令,支持多种连接参数。用户只需输入关键字便可连接服务器,无需手动拼接完整命令。
- 格式化输出:使用符合 Nushell 格式化标准的表格输出,让服务器列表一目了然。
- 便捷导入:支持通过粘贴 SSH 命令直接导入服务器信息,减少手动添加的繁琐。
安装与配置
克隆仓库:
1
git clone https://github.com/jz0ojiang/nu-easySSHTool.git
在 Nushell 配置文件中加载模块:
1
source path/to/easySSHTool/easySSHTool.nu
首次启动:初次运行时会自动创建服务器配置文件
~/.ssh/servers.json
。
使用说明
列出服务器:
1
est list # 或 est
连接到服务器:
1
est connect example_keyword # 或 est example_keyword 省略 connect 直接连接
新增服务器(从 SSH 命令中解析):
1
est add example_keyword "ssh username@newhost.com" [display_name]
删除服务器:
1
est remove example_keyword
安全模式:安全模式默认开启,隐藏敏感信息。可以使用
--unsafe
选项关闭:1
est -u list
核心技术实现
动态命令生成与执行
build
函数根据服务器配置项动态生成 SSH 命令字符串。为避免参数遗漏和拼接格式问题,最终使用 nu -c
拼接完整字符串。相比直接使用闭包的方式,nu -c
的灵活性更高。
信息遮盖的实现
遮盖敏感信息功能确保安全模式下展示的服务器列表中,host
和 user
信息自动用 ***
替代,适合在公开场合展示。实现上使用了正则表达式,既能兼容多种 host
格式,又确保所有敏感字段按长度遮盖。
路径解析与默认值
parse-path
函数用于解析和处理身份文件路径,确保无论用户指定绝对路径还是相对路径,都能正确找到身份文件。遇到路径缺失时,自动返回默认配置 default_identity_file
。
关键字检查与动态补全
command_helper
和 sub_helper
等函数提供了关键字和命令的补全功能,支持在补全列表中标红提醒已被占用的关键字。避免重复关键字的设计确保在执行 add
命令时,用户输入的关键字不会覆盖已有配置。
代码实现的挑战与优化
在 Nushell 中开发 easySSHTool
过程中,补全提示和条件判断的实现是两个关键点。在条件判断上,设计了 IMPLY
函数用于控制安全模式和 unsafe
参数切换,确保逻辑一致。补全实现上,考虑了关键字重复问题,通过 has-flag
和 match_or_default
等函数辅助检查用户输入的合法性。遮盖功能通过正则表达式实现了灵活的格式控制,满足安全展示的需求。
总结
easySSHTool
通过动态命令生成、安全模式遮盖、快捷导入等功能,让多服务器 SSH 管理更加便捷。未来可能会加入删除确认提示,并优化路径配置的兼容性,以进一步提升工具的稳定性和使用体验。