hop 是一款快速、优雅的 SSH 连接管理器,提供 TUI 仪表盘和 MCP 服务器,让你不再输入冗长的 SSH 命令,只需输入 hop prod 即可连接到 app-server-prod-03。
主要能力
- 模糊匹配:输入 hop prod 即可连接到 app-server-prod-03。
- TUI 仪表盘:用键盘或鼠标浏览、添加、编辑、删除连接。
- SSH 配置导入:已有 ~/.ssh/config 中的服务器可一条命令导入。
- 导出:将筛选后的连接导出为 YAML,便于分享或备份。
- 多执行(Multi-exec):在多台服务器上同时运行命令。
- 分组与标签:按项目、环境或自定义标签组织连接。
- 跳板机:通过 ProxyJump 支持堡垒服务器。
- 落地目录:连接后直接进入预设的工作目录。
- MCP 服务器:让 AI 助手管理你的服务器——跨项目搜索连接、运行命令、检查状态。
- Mosh 支持:在不稳定或漫游网络中,可使用 mosh 代替 SSH。
- 零依赖:单一二进制文件,随处可用。
使用方式
安装
- Homebrew(macOS/Linux)
- 可使用 AI 智能体安装:将安装说明块粘贴到 Claude Code、Codex、Cursor 或其他编码代理中,由代理为你的机器选择正确的安装路径、注册 hop 的 MCP 服务器并验证安装。
常见用法
- 启动仪表盘:运行 hop 或 hop dashboard。在仪表盘中按 Enter 连接服务器后,SSH 会话结束时会自动返回仪表盘,便于快速在服务器之间跳转。
- 一次性连接:可使用命令直接连接并在退出后返回终端。
- 筛选连接:按 / 后输入关键字进行筛选,支持多关键字 AND 逻辑(用空格分隔),搜索范围包括连接 ID、主机、项目、环境和标签。
- 快速添加:按 p 后粘贴指定格式的内容,连接表单会预填字段。
- 复制连接:按 c 可复制任意连接,表单会预填原始连接的所有字段(包括表单中不显示的选项,如 proxy jump 和 mosh),并建议无冲突的 ID(如 web-prod → web-prod-copy)。若所选 ID 已存在,表单会保留编辑内容以便修正。
- 从 SSH 配置导入:在仪表盘中按 i 打开导入弹窗,选择要导入的连接并按 Enter。
- 导出连接:在仪表盘中按 x 打开导出弹窗,仅显示当前筛选的连接;用空格切换选择,按 Enter 保存。至少需要一个筛选标志或 --all。
SSH 配置导入细节
导入的内容:Host 别名成为连接 ID;HostName、User、Port、IdentityFile;ProxyJump(用于跳板机连接);ForwardAgent 设置。 跳过:通配符模式(Host *、Host *.example.com);没有 HostName 的条目(别名用作主机名)。 冲突处理:若连接 ID 已存在,导入的连接会重命名并加上 -imported 后缀(如 myserver → myserver-imported)。
主题与颜色
仪表盘内置十六种颜色预设,每个流行主题都有深色和浅色两种变体,可独立选择。按 T 可浏览并实时预览:↑/↓ 导航,Enter 将选择保存到配置,Esc 还原。选择预设会向配置写入一行。当 theme_preset 未设置时,hop 根据终端背景自动选择 default-dark 或 default-light。可在任意预设之上叠加自定义颜色:颜色值可以是带引号的 ANSI 256 代码("39")或十六进制字符串("#bd93f9")。ANSI 代码会适配终端调色板,十六进制值是绝对的。可用键:primary、secondary、accent、success、warning、error、muted、selection、foreground。未设置的键会依次回落到预设和内置默认值。
目标解析
exec 和 open 等命令接受一个解析到一个或多个连接的目标,匹配顺序为:命名分组(groups: 下显式定义的连接 ID 列表);项目-环境模式(按 project 和 env 字段匹配,如 myapp-prod 匹配所有 project: myapp 且 env: prod 的连接);通配符模式(对连接 ID 进行通配匹配,如 web*、-prod-);模糊匹配(回退为对单个连接 ID 进行模糊匹配)。也可用 --tag 按标签筛选任意目标。使用 hop resolve 可在实际运行前预览目标会匹配哪些连接。
脚本化
hop get 将连接字段打印到 stdout,可直接用于 shell 管道和命令替换,相当于 hop 配置的 ssh -G。匹配仅限精确 ID(非模糊),在脚本中更安全;未知 ID 会以退出码 1 退出并给出“did you mean”提示。完整字段列表见 hop get --help。
MCP 服务器(AI 助手集成)
hop 内置 Model Context Protocol 服务器,让 Claude Code、Codex 等 AI 助手直接管理服务器。可让助手检查生产环境的磁盘空间、重启预发环境的服务,或查找某个项目下有哪些服务器——它会通过 hop 发现连接、解析目标并执行命令。
Claude Desktop:添加到配置文件(~/Library/Application Support/Claude/claude_desktop_config.json)。 Codex:添加到 ~/.codex/config.toml。 也可自动生成 Claude Desktop 配置。
默认仅暴露只读工具。要启用远程命令执行,需以 --allow-exec 启动,这会添加 exec_command 工具,在匹配的服务器上运行 shell 命令,并有输出限制(每台主机 stdout 和 stderr 各 64 KiB,最多 50 台主机)。输出在捕获时即被截断,多余输出被丢弃并在响应中标记为已截断。
服务器还暴露可浏览资源。身份文件(SSH 密钥路径)绝不会通过 MCP 暴露。远程执行默认禁用,需要显式 --allow-exec。所有日志输出到 stderr,以保持 JSON-RPC 传输干净。
Mosh 支持
Mosh(mobile shell)适用于不稳定网络——能优雅处理漫游、间歇性连接和高延迟。
- 全局默认:为所有连接启用 mosh。
- 单连接:为特定连接启用 mosh。
- 一次性:使用 --mosh 标志而不更改配置。
逐连接的 use_mosh: false 会覆盖全局默认。SSH 选项(端口、身份文件、代理跳转、代理转发)会通过 mosh 的 --ssh 标志自动传递。Mosh 需要本地 mosh-client 和远程主机上的 mosh-server。注意:hop exec 始终使用 SSH,无论 use_mosh 如何设置,因为 mosh 是为交互式会话设计的。
落地目录
设置 remote_dir 可让连接直接进入指定目录而不是 $HOME。连接时,hop 会 cd 进入该目录,然后交给你一个正常的交互式登录 shell,会话行为与常规 SSH 登录完全一致,只是位置不同。要点:绝对路径和 ~ 都可用,~ 和 ~user 由远程 shell 展开;设计上很宽容,如果目录缺失或无法访问,你仍会进入一个 shell(在 $HOME 中),而不会被弹下主机;在新标签页中也有效,hop open 会将落地目录带入它启动的每个终端。注意:当传入显式命令时(如 hop connect web -- uptime 或 hop exec),remote_dir 会被忽略,因为那些不是交互式会话。
Shell 补全
提供 Shell 补全功能(具体命令见项目说明)。
依赖维护与安全
依赖维护通过 Dependabot 配置,覆盖 Go 模块(包括固定版本的漏洞扫描器)、GitHub Actions 和 Docker 镜像。每周检查并打开拉取请求供审查。Go 的次要和补丁更新会分组;重大更新保持独立。Security 工作流在拉取请求、推送到 main 以及每周计划时运行 make vuln,也可从 GitHub Actions 手动启动。发现可达漏洞会使检查失败。请使用已修补且受支持的 Go 工具链在本地运行,以便扫描也反映当前标准库修复。
项目结构
详见仓库。
许可
MIT License - 详见 LICENSE。
配置与安全说明
配置文件位置:~/.config/hop/config.yaml。
安全注意:forward_agent: true 会将你的 SSH 密钥暴露给远程服务器上有 root 权限的任何人。只对你完全信任的服务器启用此项。当只是需要通过堡垒机访问内部主机时,考虑使用 proxy_jump。
Raycast 扩展
可直接从 Raycast 启动连接,支持模糊搜索、标签、环境等。可从 Raycast Store 安装。