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 搜索与管理

相关推荐
FfHUCisI10 分钟前
Golang - 信号量模式(Semaphore Pattern)
开发语言·后端·golang
fthux43 分钟前
装闭 RenoPit 源码解析(10):AI如何审查装修合同与报价单
人工智能·ai·开源·github·open source·renopit
byte轻骑兵1 小时前
实时数据集成怎么选?自研 / 开源 / 商用对比
开源·信创数据库替换·人大金仓 kingbasees·mysql 异构迁移·kwr 性能诊断·sql 语句优化
TunerT_TQ1 小时前
Google|LangExtract 源码静态评测:从 90 个 Python 文件看大模型结构化信息抽取工程基础
google·开源·github
Huangjin007_2 小时前
【Linux 系统篇(十五)】进程 (三) :进程状态深度详解
linux·运维
Vuhao2 小时前
DeepSeek Harness:我 vibe coding 一个会陪你的桃濑日和
开源·github
RisunJan2 小时前
Linux命令-talk(终端实时对话)
linux·运维·服务器
NeilYuen2 小时前
【vemory】高性能KV存储AOF方案设计
linux·c++·redis·缓存
整点bug2 小时前
AI 运维该不该自动执行命令?
运维·ssh·openai
CodeBlog-star2 小时前
LLM能力与边界:多模态、幻觉、上下文窗口及开源模型对比
人工智能·python·开源·llm