SSH在日常开发和运维中,我们经常需要在开发、测试、预发布和生产环境之间切换。当服务器数量逐渐增加后,完整的 ssh 命令越来越难记,散落的主机地址、端口、用户名和密钥也越来越难维护。
sshw 是一个使用 Go 编写的轻量开源 SSH 客户端包装工具。它把连接信息集中写入 YAML,之后可以通过终端交互菜单搜索服务器,也可以直接使用 Alias 连接。新版本还提供本地 Config Web,用浏览器管理分组和 Server。
项目地址:GitHub - cooker/sshw: 🐝 ssh client wrapper for automatic login · GitHub
在线文档:sshw --- SSH Server 搜索与管理
一、sshw 解决了什么问题
传统方式通常需要重复输入类似下面的命令:
ssh -i ~/.ssh/id_rsa -p 2222 deploy@10.20.0.11
当服务器较多时,还需要记住不同环境的用户名、端口、私钥和跳板机。sshw 的思路很简单:连接信息只配置一次,以后只负责搜索和选择。
- 通过交互式终端选择器浏览 SSH 目标;
- 按 Name、Alias、User、Host 和 Port 搜索;
- 支持嵌套分组,适合按团队、环境或网段整理服务器;
- 支持密码、私钥、Passphrase、SSH Agent 和 Keyboard Interactive;
- 支持 Jump Host 和登录后的 Callback Commands;
- 可以直接读取本地
~/.ssh/config; - 提供只监听本机地址的 Config Web 管理界面。
二、安装 sshw
已经安装 Go 的用户,可以直接执行:
go install github.com/yinheli/sshw/cmd/sshw@latest
也可以从 GitHub Releases 下载适合当前操作系统和 CPU 架构的预编译文件:
Releases · cooker/sshw · GitHub
从源码构建则执行:
git clone https://github.com/cooker/sshw.git
cd sshw
./build.sh
构建产物默认位于 dist/<os>-<arch>/sshw。
三、创建第一个配置
创建配置文件:
touch ~/.sshw.yaml
添加一台服务器:
- name: development
alias: dev
host: 192.168.8.35
user: appuser
port: 22
keypath: ~/.ssh/id_rsa
然后直接运行:
sshw
终端中会显示可选择的服务器列表。如果已经知道 Alias,也可以跳过选择器:
sshw dev
四、可以持续输入和回退的交互搜索
全局搜索既可以不带参数启动,也可以携带初始关键词:
# 搜索全部 Server
sshw -search
# 从 production 开始搜索
sshw -search production
# 短命令
sshw -q production
进入搜索界面后,初始关键词仍然可以继续编辑。可以持续输入缩小范围,也可以按 Backspace 删除字符并恢复之前被过滤的结果。即使暂时没有匹配项,也不需要退出并重新运行命令。
搜索会递归覆盖嵌套分组中的服务器,并匹配 Name、Alias、User、Host 和 Port。
五、在浏览器中管理配置
如果不想手动编辑 YAML,可以运行:
sshw -config
# 短命令
sshw -c
命令会自动在默认浏览器中打开本地 Config Web,并在终端打印访问地址。它默认只监听 127.0.0.1,不会直接暴露到公网。
Config Web 采用三栏工作区,主要包括:
- **分组管理:**创建、重命名、移动和删除嵌套分组;
- **即时搜索:**按 Server 字段或完整分组路径过滤;
- **Server 管理:**新增、编辑、复制、移动和删除服务器;
- **完整连接配置:**编辑认证信息、Jump Host 和 Callback Commands;
- **编辑保护:**显示未保存状态,离开页面前进行提醒;
- **多语言:**支持英语、简体中文、日语、韩语和越南语。
要编辑其他配置文件,可以使用:
sshw -config -config-file ./.sshw.yaml
六、配置保存的安全性
配置文件通常包含真实的主机信息,因此保存可靠性很重要。sshw 的 Config Web 使用同目录临时文件和原子替换完成写入,新配置文件权限设置为 0600。如果保存失败,会保留原文件并清理临时文件。
同时需要注意:不要把真实密码、Passphrase、私钥或生产主机信息提交到公开仓库。更推荐使用私钥或 SSH Agent。
七、直接使用 ~/.ssh/config
如果已经维护了 OpenSSH 配置,可以让 sshw 从中构建选择器:
sshw -s
目前会读取 Host、HostName、User、Port、IdentityFile 和 IdentityAgent 等字段。
八、常用命令速查
sshw 打开交互选择器
sshw <alias> 通过 Alias 直接连接
sshw -s 读取 ~/.ssh/config
sshw -search [keyword] 全局交互搜索
sshw -q [keyword] -search 的短命令
sshw -config 打开 Config Web
sshw -c -config 的短命令
sshw -version 查看版本
sshw -v -version 的短命令
sshw -help 查看帮助
总结
sshw 不试图替代 OpenSSH,而是为经常切换多台服务器的开发者和运维人员增加一层更顺手的搜索、分组和配置体验。如果你正在维护多套环境,或者经常需要通过跳板机连接服务器,可以尝试用 sshw 把零散的 SSH 命令整理成可搜索的配置。
GitHub:GitHub - cooker/sshw: 🐝 ssh client wrapper for automatic login · GitHub