Forest
告别 RDP :Hermes Agent 助力远程运维

告别 RDP :Hermes Agent 助力远程运维

引言:运维的“鼠标手”,谁懂啊

干运维这行,最累的不是处理故障,是故障前的反复操作

要测一个内网接口?开 RDP,等三秒登录画面,开 PowerShell,敲 curl……
要拉一份日志?开 RDP,找文件,右键压缩,再开 WinSCP 拖回来……
要重启一个卡死的服务?开 RDP,services.msc,搜服务名,右键重启……

每个动作单独看都不复杂,但一天下来,光”开 RDP 等画面”这一步,我就能浪费半小时。

直到我把 Hermes Agent 接入运维流程后,画风变了 —— 上面这些场景,现在基本都是一句话搞定


流程对比:传统 RDP vs Hermes,差距一目了然

光说不练假把式,先上一张对比图,看看同样是”重启一个远程服务”,两种方式到底差在哪:

graph TB
    subgraph 传统["🐢 传统 RDP 流程"]
        direction TB
        A1[打开 RDP 客户端] --> A2[输入 IP/账号/密码]
        A2 --> A3[等待登录画面<br/>3-10 秒]
        A3 --> A4[打开 services.msc]
        A4 --> A5[滚动列表搜索服务]
        A5 --> A6[右键 → 重启]
        A6 --> A7[等待状态刷新]
        A7 --> A8[肉眼确认是否成功]
        A8 --> A9[关闭 RDP 会话]
    end

    subgraph Hermes["⚡ Hermes 流程"]
        direction TB
        B1[输入:<br/>'使用 SSH 终端后端重启 web01 的 IIS 服务'] --> B2[Agent 自动走 SSH 后端]
        B2 --> B3[执行 Restart-Service +<br/>状态查询命令]
        B3 --> B4[返回结构化结果<br/>状态/耗时/异常一目了然]
    end

    classDef slow fill:#FEE2E2,stroke:#DC2626,color:#7F1D1D
    classDef fast fill:#D1FAE5,stroke:#059669,color:#064E3B
    classDef title1 fill:#FEF3C7,stroke:#D97706,color:#78350F
    classDef title2 fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A

    class A1,A2,A3,A4,A5,A6,A7,A8,A9 slow
    class B1,B2,B3,B4 fast

📊 图表说明: 同样的目标,传统流程 9 步、3-5 分钟,全程鼠标键盘反复切换;Hermes 流程 4 步、10 秒内搞定,全程不离开对话框。关键不是”快了多少秒”,而是”心智负担减少了多少” —— 你不用再去记服务名、找窗口、切工具,只需要描述目标。


一、先聊聊原理:Hermes 的终端后端是个啥

Hermes Agent 有个核心能力叫终端后端(terminal.backend),决定了 Agent 执行的命令到底跑在哪里。支持 6 种:local / docker / ssh / modal / daytona / singularity

对运维来说,SSH 后端就是命门:

# 全局切到 SSH 后端
hermes config set terminal.backend ssh

# 或者只在当前会话临时切换
/hermes config set terminal.backend ssh

切换之后,Agent 接到的所有 shell 命令都会走 SSH 跑到目标服务器上。Windows Server 只要装了 OpenSSH Server(Win Server 2019+ 自带,启用即可),就能完美对接。

💡 提示:建议给每台/每组服务器创建独立的 Profilehermes profile create prod-web01),避免切换时改错全局配置。

下面是 4 个我用得最爽的场景。


二、场景一:远程请求 API 接口(不用再开 Postman)

痛点: 内网 API 接口测试,本地访问不到,只能 RDP 上去用 curl 或 Postman 戳。

Hermes 解法: 直接对话。

我:帮我请求一下 web01 上的 http://localhost:8080/api/health,看看返回啥

Agent 自动走 SSH 后端执行:

curl -s http://localhost:8080/api/health | ConvertFrom-Json

更骚的是,Agent 还会自动解析 JSON 返回值,告诉你哪个字段异常、哪个服务依赖挂了。比起自己肉眼对着一坨 JSON 找问题,效率提升肉眼可见。

适用场景: 健康检查、接口联调、第三方回调验证。


三、场景二:远程打包文件回传(一句话,文件就到本地了)

痛点: 客户报问题,要拉一份当天的应用日志。传统流程:RDP → 找路径 → 选文件 → 右键压缩 → 开 WinSCP → 拖回本地。少说 5 分钟。

Hermes 解法:

我:把 web01 上 D:\Logs\App\ 今天的日志打包发我

Agent 的执行流程:

# 1. 远程打包(在 SSH 后端执行)
$today = Get-Date -Format "yyyyMMdd"
Compress-Archive -Path "D:\Logs\App\*$today*.log" -DestinationPath "C:\temp\app_$today.zip"

# 2. 通过 scp 把文件拉到本地 /tmp/
# (Agent 自动调用)

最后 Agent 直接给你一个本地文件链接:

[app_20260513.zip](/tmp/app_20260513.zip)

点一下就下载,全程零鼠标切换。关键是这套流程对 Agent 来说是”自然语言可编排”的,你想要”按时间过滤”、“只要 ERROR 级别的”、“打包前先 grep 一下关键字”,加一句话就行。


四、场景三:远程触发任务计划程序(调试神器)

痛点: Win Server 的计划任务调试,每次都要 RDP → 打开”任务计划程序” → 翻树状目录找任务 → 右键运行 → 再去看历史记录。光找任务就够烦的。

Hermes 解法:

我:立刻触发 web01 上名叫 DataSyncJob 的计划任务,跑完告诉我退出码

Agent 执行:

# 立即触发
schtasks /Run /TN "DataSyncJob"

# 等待并查询结果
Start-Sleep -Seconds 5
schtasks /Query /TN "DataSyncJob" /V /FO LIST | Select-String "Last Result"

Agent 会把退出码、最后一次运行时间、下一次触发时间都整理成表格返给你。调试计划任务从此告别 GUI,再也不用对着那个反人类的任务树发呆了。


五、场景四:远程重启 Windows 服务(批量也行)

痛点: 服务卡死要重启,传统流程:RDP → services.msc → 搜服务 → 右键重启。如果是 IIS + 三个 Windows 服务一起重启,能让你点到怀疑人生。

Hermes 解法:

我:重启 web01 上的 IIS、MSMQ、MyAppService 这三个服务,重启完确认状态

Agent 执行:

$services = @("W3SVC", "MSMQ", "MyAppService")
foreach ($svc in $services) {
    Restart-Service -Name $svc -Force
    Get-Service -Name $svc | Select-Object Name, Status
}

输出整齐的状态表格,哪个起来了、哪个还卡着,一目了然。真要遇到大故障批量重启的时候,这个能省命


六、关键技巧:Profile + 动态切换,多服务器不混乱

管多台服务器最怕”对错机器执行命令”,Hermes 的 Profile 机制是解药:

# 给每台服务器建独立 Profile
hermes profile create prod-web01
hermes profile use prod-web01
hermes config set terminal.backend ssh
# (此处配置 SSH 连接信息)

hermes profile create prod-db01
hermes profile use prod-db01
hermes config set terminal.backend ssh

日常切换只要 hermes profile use prod-web01,所有命令自动走对应服务器。配上 Hermes 的会话标题显示,再也不会”对错机器删错文件”了(别问我怎么知道的 😅)。

临时操作还能用斜杠命令热切换:

/hermes config set terminal.backend ssh   # 临时切到远程
/hermes config set terminal.backend local # 切回本地

七、避坑提醒

  1. OpenSSH Server 服务记得设成自启:Win Server 默认装了但不启动,重启后会失联
  2. SSH 密钥认证强烈推荐:免密登录是 Agent 流畅运行的前提,别用密码
  3. PowerShell 编码问题:远程拿回中文输出可能乱码,在 Profile 里加 $OutputEncoding = [System.Text.Encoding]::UTF8 解决
  4. 高危命令二次确认:涉及 Remove-ItemStop-Computer 这类,养成让 Agent 先 dry-run 的习惯

总结

回顾一下这篇文章的核心:

  1. Hermes 的 SSH 终端后端 是远程运维提效的核心抓手
  2. 4 个真实场景 —— API 调用、文件打包回传、计划任务触发、服务重启 —— 都能从”几十次点击”压缩成”一句话”
  3. Profile + 动态切换 解决多服务器管理的混乱问题
  4. 避坑要点 少走弯路

Just do it ~