sshw:用交互搜索和 Web 配置高效管理 SSH Server

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

目前会读取 HostHostNameUserPortIdentityFileIdentityAgent 等字段。

八、常用命令速查

复制代码
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

项目网站:sshw --- SSH Server 搜索与管理

相关推荐
名字还没想好☜1 小时前
Go 结构体内存对齐:调整字段顺序,同样的字段省下 40% 内存
开发语言·后端·golang·go·内存对齐
fthux1 小时前
GitHub Actions自动化运维实战:构建高效可靠的CI/CD流水线
运维·自动化·github
流浪0012 小时前
Linux系统22:——文件(六):目标文件与ELF深度解析:从编译到加载的全景揭秘
linux·运维·服务器
MrDJun2 小时前
长期稳定跑网页监控:TLS 指纹、代理选路与请求节流的工程实践
运维·爬虫·python·网络协议·网站监控
FfHUCisI2 小时前
sync.Mutex 互斥锁
golang
AAA@峥2 小时前
Ceph 集群配置管理完整指南
运维·数据库·分布式·ceph
kidwjb2 小时前
Linux内核-内核信号处理函数
linux·内核·信号处理
爱吃龙利鱼2 小时前
K8s 运维体系搭建:全组件监控与日志收集实战(victoria-metrics-k8s-stack 0.87.0)
运维·容器·kubernetes
weixin_446729162 小时前
Nginx简单学习与了解
运维·nginx