爱意满满的作品展示区。
jie123168

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

  •  
  •   jie123168 · 2 days ago · 697 views

    为什么做这个

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

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

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

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

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

    Web UI 实时会话(经跳板到达目标机):

    Web UI session via jump host


    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


    主要能力

    1. 多级跳板 / 复杂登录

    很多环境不是一次 ssh user@host 就结束,而是菜单、OTP 、多跳。

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

    2. 跨跳板文件传输

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

    3. 远程编辑

    shellink session edit 做精确替换,适合改配置一类操作。

    4. 审计与人机协同

    会话输入输出可留历史,方便回看 Agent 干了啥;敏感步骤可以人工接管。

    5. 给 Agent 准备的 skill

    仓库里有 shellink-cli skill ,Agent 按 CLI 接口操作即可,不必自己实现 SSH/跳板逻辑。

    安装二进制( macOS / Linux ):

    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

    装好后:

    shellink cli                  # TUI ,会按需拉起 daemon
    shellink agent-doc            # 给 Agent 看的接口说明
    

    CLI/TUI 会话视图:

    CLI/TUI session view

    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 都行,谢谢。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3199 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 13:55 · PVG 21:55 · LAX 06:55 · JFK 09:55
    ♥ Do have faith in what you're doing.