🤖HermesBlog
Hermes 实战教程 · 第25篇2026/8/9· Easy Understand Hermes Agent

实战:SSH 远程 OAuth 登录

Hermes 实战教程第25篇:SSH 远程 OAuth。远程机器登录服务。

这篇教程教你在远程服务器上运行 Hermes Agent 时,如何完成 Spotify、MCP 服务器等服务的 OAuth 登录授权。

为什么远程登录会失败?

想象一下:你的浏览器住在“你家”(笔记本),而 Hermes 住在“公司”(远程服务器)。OAuth 登录时,授权服务器会把浏览器重定向到 http://127.0.0.1:43827/callback——这个地址在你家的浏览器看来是指向你自己,但监听这个地址的程序却在公司的服务器上。两边根本对不上,登录自然失败。

解决办法:打一条“隧道”,让“你家”和“公司”之间的这个端口直接连通。

第 1 步:在笔记本上开一条 SSH 隧道

打开笔记本上的新终端,运行:

ssh -N -L 43827:127.0.0.1:43827 用户名@远程服务器地址
  • -N 表示“只开隧道,不登录远程终端”
  • 这条命令会一直挂着,别关掉这个终端

第 2 步:在远程服务器上发起登录

另开一个终端,SSH 登录远程服务器,然后运行:

hermes auth spotify --no-browser

Hermes 会检测到你正在 SSH 会话中,不会自动打开浏览器,而是打印一条授权链接,以及一行 Waiting for callback on http://127.0.0.1:43827/callback——记下这个端口号(可能不是 43827,以实际输出为准)。

第 3 步:在笔记本浏览器里完成授权

把授权链接复制到笔记本浏览器打开,点击“同意”。授权服务器会把浏览器重定向到 127.0.0.1:43827/callback——此时隧道生效,请求被转发到远程服务器的监听程序,Hermes 显示 Login successful!。看到这行字后,隧道终端按 Ctrl+C 关掉即可。

特殊情况:MCP 服务器(Linear、Sentry 等)

远程 MCP 服务器也走同样的回环重定向流程。如果你在交互式终端里操作,有个更省事的办法:Hermes 会提示你把浏览器地址栏里的完整重定向 URL(或 ?code=...&state=... 部分)粘贴回来,直接完成授权,完全不需要隧道

如果你需要无人值守的自动登录,那就用上面第 1 步的 SSH 隧道方案。

经过跳板机怎么办?

用 SSH 的 -J 参数(ProxyJump)一步到位:

ssh -N -L 43827:127.0.0.1:43827 -J 跳板机用户@跳板机地址 目标用户@目标服务器

常见坑

  • 端口被占用lsof -iTCP:43827 -sTCP:LISTEN 找到占用进程,kill 掉再重试
  • 登录超时:确认隧道还活着(ssh -N 没输出是正常的),检查端口号是否与最新输出一致
  • 令牌存错位置:确保用运行 Hermes 服务的那个系统用户执行登录命令(如 sudo -u hermes -i),否则令牌会存到错误的 ~/.hermes 目录

小结

SSH 隧道本质上是把“远程的回环地址”搬到了你本地,让浏览器和 Hermes 能“隔空握手”。记住:隧道终端保持打开,授权完成后才能关闭。

下篇预告:搞定登录后,下一步就是让 Hermes 真正跑起来——下一篇我们聊聊 “用自然语言让 Hermes 帮你干活”,敬请期待!

📖 官方文档

本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › guides/ssh-oauth