十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Hermes Agent 部署在远程主机上 OAuth 回跳到 127.0.0.1 失败怎么解决

Hermes Agent 部署在远程主机上 OAuth 回跳到 127.0.0.1 失败怎么解决 Hermes Agent 部署在远程主机上 OAuth 回跳到 127.0.0.1 失败怎么解决【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent当 Hermes Agent 运行在远程服务器、容器或需要经跳板机访问的主机上而你的浏览器在本地笔记本时Spotify 和远程 MCP 服务Linear、Sentry、Atlassian、Asana、Figma 等的浏览器 OAuth 登录会在最后一步失败授权服务器把浏览器重定向到http://127.0.0.1:port/callback浏览器去访问的是你笔记本上的127.0.0.1而 Hermes 的回调监听器绑定在远程服务器上的127.0.0.1重定向根本到不了远程监听器。解决办法是一条 SSH 本地端口转发命令ssh -N -L ...把笔记本本地的回环端口透传到远程主机对于交互式终端里的 MCP 登录也可以直接把重定向 URL 粘贴回 Hermes 提示符完全不需要隧道。先确认你遇到的是不是这类问题Hermes 正常打印了 authorize URL 和Waiting for callback on http://127.0.0.1:port/callback你在浏览器里完成授权后要么浏览器显示连接错误要么 Hermes 侧报Authorization timed out waiting for the local callback。哪些提供方需要处理这个问题只有使用 loopback 回跳 OAuth 流程的提供方才需要隧道来源见 OAuth over SSH / Remote HostsProviderLoopback 端口是否需要隧道Spotify43827默认需要当 Hermes 在远程主机上时MCP 服务器auth: oauth每个服务器自动挑空闲端口需要或粘贴 redirect URLxai-oauthGrok SuperGrok不适用不需要——device code 流程anthropicClaude Pro/Max不适用不需要——粘贴 code 流程openai-codexChatGPT Plus/Pro不适用不需要——device code 流程minimax、nous-portal不适用不需要——device code 流程如果你的提供方不在表里就不需要隧道。device code 类流程如 xAI Grok OAuth只需在任意浏览器打开打印出来的 verification URLHermes 会轮询等待批准。为什么不能把监听器改绑到0.0.0.0来解决Spotify 和大多数 MCP OAuth 服务器会校验redirect_uri白名单要求必须是回环形式http://127.0.0.1:exact-port/callback。换绑地址或端口都会被授权服务器以 redirect_uri 不匹配拒绝SSH 隧道正是为了在端到端保持回环 URI 不变。Spotify 登录SSH 隧道主路径以下命令中userremote-host替换为你实际的 SSH 登录用户和主机名后文同理。1. 在本地笔记本上开隧道单独一个终端ssh -N -L 43827:127.0.0.1:43827 userremote-host-N表示不打开远程 shell只维持隧道。这个终端要在整个登录过程中保持运行。2. 在另一个 SSH 会话里运行授权命令ssh userremote-host hermes auth spotify --no-browserHermes 检测到 SSH 会话SSH_CLIENT或SSH_TTY被设置后会跳过自动打开浏览器打印 authorize URL 和Waiting for callback on http://127.0.0.1:port/callback一行。端口以这行打印的值为准——Spotify 默认43827但如果首选端口被占用 Hermes 会自动换端口。如果它打印的端口不是43827隧道也要用同样的端口重新建。3. 在本地浏览器打开 authorize URL通过同意页。授权服务器重定向到http://127.0.0.1:port/callback请求经隧道转发到远程监听器Hermes 打印Login successful!。看到这行后即可用 CtrlC 关掉隧道终端。4. 验证见 Spotify 功能文档 的 Verify 一节hermes auth status spotify会显示 token 是否存在以及 access token 的过期时间。之后 token 刷新是自动的任何 Spotify API 调用返回 401 时客户端会用 refresh token 换一次并重试一次。远程 MCP 服务器粘贴回跳或隧道MCP 服务器auth: oauth用同样的 loopback 回跳流程。Hermes 为每个服务器自动挑空闲端口在 OAuth 流程启动时打印 authorize URL——触发时机是启动时新服务器出现在mcp_servers:配置里或你运行hermes mcp login server时。两种完成方式方式 1——把重定向 URL 粘贴回来无需任何设置。在交互式终端中Hermes 在本地监听器运行的同时提示你粘贴 redirect URL。在浏览器批准后重定向到http://127.0.0.1:port/callback会显示连接错误——这是预期现象。把浏览器地址栏里的完整 URL复制出来粘贴到 Hermes 提示符文档示例abc123/xyz为示例值MCP OAuth: authorization required. Open this URL in your browser: https://mcp.linear.app/authorize?response_typecode... Or paste the redirect URL here (or the ?code...state... portion) and press Enter: https://mcp.linear.app/callback?codeabc123statexyz Got authorization code from paste — completing flow.只粘贴?code...state...查询串也可以。这适用于任何auth: oauth的 MCP 服务器不需要改 SSH 配置。方式 2——SSH 端口转发同 Spotify。需要无人在场完成流程例如脚本化重新认证无法交互粘贴时用这个。Hermes 在 SSH 会话提示里打印出它绑定的端口记为port然后ssh -N -L port:127.0.0.1:port userremote-host之后照常在浏览器打开 authorize URL重定向经隧道到达监听器。已知的配置重载竞态坑如果在运行中的 Hermes 会话里编辑~/.hermes/config.yaml添加 OAuth MCP 服务器CLI 会在 30 秒超时内自动重载 MCP 连接时间不够完成交互式 OAuth重载会放弃。正确做法是在一个新终端里运行hermes mcp login server它没有这个上限会等你完整 5 分钟粘贴回跳。完成后 token 缓存在~/.hermes/mcp-tokens/server.json0o600 权限之后运行会静默复用直到刷新失败。详见 MCP 功能文档。通过跳板机jump host访问如果你经堡垒机/跳板机到达 Hermes用 SSH 内置的-JProxyJump端口只落在最终主机上不落在跳板机上ssh -N -L 43827:127.0.0.1:43827 -J jump-userjump-host userfinal-host旧版 OpenSSH 不支持-J时用长格式ssh -N \ -o ProxyCommandssh -W %h:%p jump-userjump-host \ -L 43827:127.0.0.1:43827 \ userfinal-hostmosh / tmux / ControlMaster 环境隧道是底层 SSH 连接的属性。如果你通过 mosh 会话在tmux里跑 Hermesmosh 的漫游不会携带-L转发——为-L隧道单独开一个普通 SSH 会话这个连接必须在认证流程期间保持存活交互的 mosh/tmux 会话照常运行即可。如果使用ssh -o ControlMasterauto端口转发共享 master 连接的生命周期。隧道没起来时重启 masterssh -O exit userremote-host ssh -N -L 43827:127.0.0.1:43827 userremote-host三个常见报错bind [127.0.0.1]:43827: Address already in use你笔记本上已有进程占用该端口要么上一个隧道没干净退出要么本地也跑着一个 Hermes 在监听。找到占用者并结束lsof先查 PID确认是自己的进程再 kill# macOS / Linux lsof -iTCP:43827 -sTCP:LISTEN kill PIDPID替换为上一步lsof输出中的进程号它只影响你本地这台机器上的该进程。然后重试ssh -L命令。Authorization timed out waiting for the local callback重定向没有回到远程监听器。按文档给出的检查顺序确认隧道还活着ssh -N本身不产生输出看启动它的那个终端是否还挂着确认你用的是最新Waiting for callback on ...一行里的端口首选端口被占用时 Hermes 会自动换端口隧道端口要和它一致必要时重启隧道然后重新运行授权命令。token 落在了错误的~/.hermestoken 写在运行hermes auth add ...的那个 Linux 用户名下。如果你的 gateway / systemd 服务以另一个用户运行例如root或专门的hermes用户要以那个用户执行认证token 才会落到它的~/.hermes/auth.json例如sudo -u hermes -i或等效方式。不适用与边界提供方不在上面的表里device code 或粘贴 code 流程时不需要隧道按各自文档走即可例如 xAI Grok OAuth。Hermes Desktop 客户端从 MCP 设置界面发起 OAuth 时由 Desktop 在本地承接回调并回传不需要隧道前提是 Desktop 与后端都是最新版Desktop 不会回退到远程 HTTP 回调。本文只覆盖 loopback 回跳失败这一类问题MCP 登录中还有另一类独立症状——服务器拒绝动态客户端注册如 Google Drive、Atlassianhermes mcp login能列出工具但真实工具调用超时需要在提供方控制台自建 OAuth client 后写入配置处理方式见 MCP 功能文档。【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表