如何通过 SSH 在远程服务器上登录 Claude Code
在没有浏览器的服务器上,通过 SSH 用粘贴代码登录、一年有效的 setup-token 或 API 密钥登录 Claude Code,并让从手机启动的会话保持可用。
- CLI
- 0.2.17
- 预览 ref
- a2c45c8
简要回答
在通过 SSH 访问的服务器上,Claude Code 无法打开浏览器,而你笔记本上的浏览器也访问不到服务器本地的回调。有三种方法:
- 粘贴代码登录。 运行
claude,在笔记本或手机上打开登录 URL 并登录,再把浏览器显示的代码粘贴回终端。适合偶尔会坐到跟前的机器。 - 长期有效的令牌。 在有浏览器的电脑上运行
claude setup-token,然后在服务器上设置CLAUDE_CODE_OAUTH_TOKEN。适合无人值守的机器。 - API 密钥。 设置
ANTHROPIC_API_KEY。通过 Claude Console 按 token 计费,适合脚本和 CI。
如果登录界面无法让你通过 SSH 复制 URL,直接用方法 2。
问题
一种常见的配置:Claude Code 会话运行在另一个房间的 Linux 机器上。仓库在那里,它也从不睡眠。第一次通过 SSH 在上面运行 claude 时,登录界面要求打开浏览器,而这台机器没有浏览器。
笔记本上的浏览器可以打开链接,但登录后它会尝试跳转回笔记本上的 localhost,而那里什么都没有在监听。几周后凭据过期,你又得重来一遍,也许还是在火车上用手机操作。
所以真正的问题是:如何登录一次、如何保持登录状态,以及不在键盘前时该怎么办。
方法 1:通过 SSH 用粘贴代码流程登录 Claude Code
这是常规路径,Anthropic 的认证文档也针对 SSH 和无头主机介绍了它。
ssh you@server
claude在登录界面:
- 按
c复制登录 URL,或者选中它。 - 在笔记本或手机的浏览器中打开并登录。
- 浏览器访问不到服务器的回调,于是会显示一个代码而不是跳转。
- 把代码粘贴到
Paste code here if prompted提示处。
容易卡住的地方:
- 复制快捷键复制到的是服务器的剪贴板,通过 SSH 你拿不到。Claude Code 仓库的一个 GitHub issue 报告说,URL 在全屏登录界面中换行,导致也无法选中。如果你遇到这种情况,用方法 2。
- tmux 和较窄的终端可能会让 URL 折行。复制前先把窗口拉宽或放大窗格。
- 凭据会过期。 过期后,这台机器上的下一个会话又会停在登录界面,你又得通过 SSH 重做一遍。
方法 2:用长期有效的 claude setup-token 登录 Claude Code
对于无人值守的机器,Anthropic 提供了一年有效的 OAuth 令牌。在有浏览器的电脑上创建一次即可:
# on your laptop
claude setup-token它会打开与 /login 相同的浏览器登录,打印令牌,但不会保存到任何地方。复制下来,然后在服务器上:
# on the server, in the environment the agent runs in
export CLAUDE_CODE_OAUTH_TOKEN=your-token
claudeAnthropic 的文档对这个令牌的说明:
- 需要 Pro、Max、Team 或 Enterprise 订阅。
- 它只能发起模型请求,因此不能启动 Claude Code Remote Control 会话,也不能获取 claude.ai 连接器。本地配置的 MCP 服务器仍然可用。
--bare模式不会读取它。如果脚本传了--bare,请改用 API 密钥。
两条实用提示:
- 把令牌放在只有你的用户能读取的地方,例如一个用于加载的
0600文件,而不是共享机器上的 shell 配置文件。能读到它的任何东西都能消耗你的订阅。 - 在代理实际启动的地方设置它。 如果 Claude Code 由后台服务启动,你在交互式 shell 中 export 的变量在那里并不存在。这是令牌“SSH 下能用、服务里不行”常见原因。
方法 3:在服务器上使用 Anthropic API 密钥
export ANTHROPIC_API_KEY=sk-ant-...
claudeClaude Code 会让你确认一次密钥,之后就跳过浏览器。它通过 Claude Console 按 token 计费,与 Pro 或 Max 订阅分开。适合脚本和定时任务。
让从手机启动的会话保持 Claude Code 登录
方法 1 到 3 解决的是第一次登录。更难的是第二次:一个月后从手机启动的会话,卡在一台你没有 SSH 连上的机器的过期登录上。
如果你想从手机启动和引导服务器上的 Claude Code 会话,并且不用打开 SSH 应用就能看到哪个会话卡在登录上,Happier 是一款开源应用,可以从手机、桌面或网页跨设备运行和编排 Claude Code、Codex 等代理。
代理运行在你自己的电脑或服务器上,手机、桌面或网页应用连接到它。设置方法见如何在手机上使用 Happier。它在 GitHub 上开源,可以在这里下载,还有一个 Discord。
登录这部分是这样工作的。
1) 扫描二维码把服务器与 Happier 配对
在服务器上:
curl -fsSL https://happier.dev/install | bash
happier auth login --method mobile终端会显示一个二维码。用手机上的 Happier 应用扫描并批准。如果你在已经安装了 Happier CLI 的笔记本上,happier auth pair-remote --ssh you@server 会通过 SSH 帮你完成配对。
2) 在 Happier 应用中登录服务器上的 Claude Code
在应用中打开 设置(Settings)→ AI 与代理(AI & Agents)→ AI 提供商设置(AI backends)→ Claude,在上下文栏中选择服务器(在 Happier 中称为机器),查看 认证(Authentication)部分。它会显示 Claude Code 在那台电脑上是否已登录,以及登录方式。
登录(Log in)或 重新认证(Reauthenticate)会打开一个 提供商登录终端(Provider login terminal),在服务器上运行 Claude Code 并替你发送 /login。你在手机上打开 URL、登录,再把代码粘贴回那个终端。这就是方法 1,只是不需要 SSH 应用。用其他方式登录后,立即检查(Check now)会刷新状态。
3) 把 Claude setup-token 一次性存到 Happier
如果你更想用 setup-token,Happier 可以把它作为已连接服务替你保存:
claude setup-token # on a computer with a browser
happier connect claude # paste the token when askedhappier connect claude 默认要求输入 setup-token。令牌加密保存在你的 Happier 账号中,只在你自己的设备上解密。它会出现在 设置(Settings)→ 已连接服务(Connected services)下,你在任何一台电脑上启动 Claude 会话时都可以选择它。Anthropic API 密钥也可以用 happier connect claude --api-key 以同样的方式保存。
坦白说的限制:服务器仍需开机且可访问。Happier 无法让关机的机器保持登录,提供商对令牌的规定也依然适用。
故障排除
在 Claude Code 登录界面按 c 复制不到能粘贴的内容
复制到的是服务器,而不是你的笔记本。用终端自带的选择功能选中 URL,把窗口拉宽避免折行,或者在另一台电脑上使用 claude setup-token。
Claude 登录后浏览器访问不到 localhost
那是回调在尝试访问你的笔记本。回到显示代码的浏览器标签页,或者重新开始登录并找到代码步骤。通过 SSH 时,使用代码就是预期的路径。
Claude Code 通过 SSH 能用,但服务启动的会话要求登录
服务看不到你交互式 shell 的环境。在服务的环境中设置 CLAUDE_CODE_OAUTH_TOKEN,或者把令牌存为已连接服务,让会话在启动时获取它。
用 setup-token 无法启动 Claude Code Remote Control
Anthropic 的文档说明 setup-token 只能发起模型请求,所以 Remote Control 需要方法 1 中的常规 claude.ai 登录。
常见问题
能完全不用浏览器登录 Claude Code 吗?
你需要在某个地方用一次浏览器,可以是笔记本也可以是手机。claude setup-token 和粘贴代码登录都使用另一台设备上的浏览器。只有 API 密钥能完全跳过浏览器。
setup-token 有效期多长?
根据 Anthropic 的文档是一年。它只打印一次且不保存,所以关闭终端前先保存好。
需要 Claude Pro 或 Max 吗?
粘贴代码登录和 setup-token 需要 Claude 订阅(setup-token 需要 Pro、Max、Team 或 Enterprise)。API 密钥不需要订阅,通过 Console 计费。
可以把笔记本上的 ~/.claude 复制到服务器吗?
有人这么做,但这不是文档化的登录方式,而且当提供商轮换凭据时,复制的凭据可能失效。在另一台电脑上复用登录的文档化方式是 setup-token。
在树莓派或 VPS 上也一样吗?
一样。步骤与硬件无关,只取决于机器上有没有浏览器。