做了个支持多级跳板的 SSH 会话中间件,让 AI Agent 能操作堡垒机后面的服务器

发布于

## 为什么做这个
最近工作里,写代码、改文档、点网页这类事,基本已经可以交给 AI Agent 了。但一碰到**服务器操作**就卡住:

公司一般都有跳板机 / 堡垒机,Agent 没法直接连后面的机器,自动化就断了。

更头疼的是排查问题:经常得先登录服务器,把线上日志拷到本地,丢给 Agent 分析,再拿着它给的步骤回到线上执行。来回倒腾,特别耗时间。

所以做了 **Shellink**:把「多级跳板之后的那台机器」收成一个稳定会话,让 AI Agent (和人)能直接在上面执行命令、传文件、看历史。

仓库: [https://github.com/jie123108/Shellink](https://github.com/jie123108/Shellink)
中文文档: [https://github.com/jie123108/Shellink/blob/main/README.zh-CN.md](https://github.com/jie123108/Shellink/blob/main/README.zh-CN.md)

Web UI 实时会话(经跳板到达目标机):
![Web UI session via jump host](http://pic.zhso.org/2026/07/19/c137216eb40f.png)

---

## Shellink 是什么
一句话:面向 AI Agent 和人类的**会话中间件**( session middleware )。

本地跑一个 daemon ,持有 SSH / 本地 PTY 会话;外面用统一的 CLI (也有 TUI、Web UI、HTTP/WebSocket )去操作这些会话。

不是又一个 SSH GUI ,重点是:
- 会话状态可查询( CONNECTING / WAITING_INPUT / IDLE …),方便 Agent 决策下一步
- CLI 有稳定的 `--json` 输出,适合脚本和 Agent 调用
- 需要人插手时可以切到 MANUAL 模式(比如输入 OTP )

会话 Dashboard (活跃会话列表):
![Web UI dashboard](http://pic.zhso.org/2026/07/19/3121eb20071c.png)

---

## 主要能力
**1. 多级跳板 / 复杂登录**
很多环境不是一次 `ssh user@host` 就结束,而是菜单、OTP、多跳。

说明一下边界:Shellink **本身不负责自动登录**。多级跳转、堡垒机菜单、OTP 等交互认证,建议用 `command` 类型的 profile 挂 [expect](https://linux.die.net/man/1/expect) 脚本处理;简单场景也可以用 `sshpass`(仅密码)或 `ssh` 的 `ProxyJump` / `ProxyCommand`。Shellink 负责把登录完成后的会话管起来(执行命令、传文件、状态、审计)。

**2. 跨跳板文件传输**
上传/下载走已有的 PTY,不额外要求 SFTP。复杂跳板链路上也能把日志拉下来、把脚本推上去——正好对应「拷日志到本地再问 Agent 」那个痛点。

**3. 远程编辑**
`shellink session edit` 做精确替换,适合改配置一类操作。

**4. 审计与人机协同**
会话输入输出可留历史,方便回看 Agent 干了啥;敏感步骤可以人工接管。

**5. 给 Agent 准备的 skill**
仓库里有 `shellink-cli` skill ,Agent 按 CLI 接口操作即可,不必自己实现 SSH/跳板逻辑。

安装二进制( macOS / Linux ):
```bash
curl -fsSL https://raw.githubusercontent.com/jie123108/Shellink/main/install.sh -o /tmp/shellink-install.sh
cat /tmp/shellink-install.sh
sh /tmp/shellink-install.sh
```
或让 AI 助手直接按文档装:
> 请帮我安装 Shellink 及其 skills ,参考这份文档: [https://raw.githubusercontent.com/jie123108/Shellink/main/AGENTS_INSTALL.md](https://raw.githubusercontent.com/jie123108/Shellink/main/AGENTS_INSTALL.md)

装好后:
```bash
shellink cli # TUI ,会按需拉起 daemon
shellink agent-doc # 给 Agent 看的接口说明
```

CLI/TUI 会话视图:
![CLI/TUI session view](http://pic.zhso.org/2026/07/19/7d7ee8a0004a.png)

Web UI 默认在本地:`http://127.0.0.1:7070/shellink/ui/`

---

## 安全提醒(重要)
- `command` 类型的 profile 会以 daemon 进程用户身份执行你配置的命令,请只在受信任环境跑,并保护好 `SHELLINK_TOKEN`
- 让 Agent 直连生产有真实风险:建议只读/排查类操作,或先指向非生产环境

---

## 求试用 & 反馈
欢迎有跳板机 / 堡垒机场景的同学试试。登录脚本本身用 expect 就行;我更想听的是**登录之后**这块好不好用:
1. **会话与操作**:状态是否清晰、命令执行是否稳、跨跳板传文件/远程编辑有没有坑
2. **和 Agent 一起用**:接 Cursor / Claude Code 等时,CLI/`--json`/skill 哪里别扭、缺什么
3. **人机协同**:OTP 等需要人插手时,MANUAL 模式、审计历史是否够用

有问题直接回帖或去 GitHub 提 issue 都行,谢谢。

---

原文链接:[点击查看](https://www.v2ex.com/t/1228392)

评论

暂无评论。