首页 资讯 下载 教程 Skills 社群

使用 Tailscale 安全远程访问 OpenClaw

概述

OpenClaw 默认绑定在本地回环地址(127.0.0.1),外部设备无法直接访问。Tailscale 提供了安全的远程访问方案,无需暴露公网端口即可从任意设备连接你的 OpenClaw 实例。

三种访问模式

Serve 模式(Tailnet 内部访问)

仅限 Tailscale 网络(Tailnet)内的设备访问,安全性最高:

# 启用 Tailscale Serve
tailscale serve https / http://127.0.0.1:18789

配置说明:

  • OpenClaw 继续绑定在 127.0.0.1:18789(回环地址不变)
  • Tailscale 在本地创建反向代理
  • 只有加入同一 Tailnet 的设备可以访问

适用场景:个人多设备使用,家庭网络内共享。

Funnel 模式(公网 HTTPS 访问)

通过 Tailscale Funnel 向公网暴露 HTTPS 端口:

# 启用 Funnel 公网访问
tailscale funnel https / http://127.0.0.1:18789

Funnel 端口限制:仅支持以下端口:

  • 443(默认 HTTPS)
  • 8443
  • 10000

适用场景:需要从 Tailnet 外部访问(如给朋友临时分享)。

Off 模式(关闭远程访问)

# 关闭 Serve/Funnel
tailscale serve off

恢复为仅本地访问。

前置要求

使用 Tailscale 远程访问前需确认:

  • Tailscale 版本:v1.38.3 或更高
  • MagicDNS:已在 Tailscale 管理后台启用
  • 登录状态:当前设备已加入 Tailnet
# 检查 Tailscale 版本
tailscale version

# 检查连接状态
tailscale status

认证方式

Token 认证

适合 API 调用和自动化场景:

// ~/.openclaw/openclaw.json
{
  "auth": {
    "method": "token",
    "token": "${OPENCLAW_AUTH_TOKEN}"
  }
}

生成 Token 后在客户端请求中携带:

curl -H "Authorization: Bearer your-token-here" \
  https://your-machine.tail-xxxxx.ts.net/api/status

密码认证

适合浏览器访问 Web 控制面板:

{
  "auth": {
    "method": "password",
    "username": "admin",
    "password": "${OPENCLAW_ADMIN_PASSWORD}"
  }
}

Tailscale Identity Headers

启用 allowTailscale 后,OpenClaw 可以信任 Tailscale 提供的身份信息头:

{
  "auth": {
    "allowTailscale": true
  }
}

Tailscale 会在请求中注入以下头信息:

  • Tailscale-User-Login:用户登录名
  • Tailscale-User-Name:用户显示名
  • Tailscale-User-Profile-Pic:头像 URL

这些信息可用于自动识别访问者身份,免去手动登录步骤。

Serve 配置详解

Serve 模式的关键点是保持 OpenClaw 的回环绑定不变:

外部设备 ──> Tailscale Serve (HTTPS) ──> 127.0.0.1:18789 (OpenClaw)

这意味着即使 Tailscale 出现问题,OpenClaw 本身不会暴露到局域网或公网。

SSH 隧道替代方案

如果不方便安装 Tailscale,可以使用 SSH 隧道作为替代:

# 从远程设备建立 SSH 隧道
ssh -L 18789:127.0.0.1:18789 user@your-server

# 然后在本地访问
# http://127.0.0.1:18789

结合 Tailscale SSH,无需管理 SSH 密钥:

# Tailscale SSH(免密钥)
ssh user@your-machine.tail-xxxxx.ts.net \
  -L 18789:127.0.0.1:18789

安全最佳实践

  1. 优先使用 Serve 模式:除非有明确需求,不要使用 Funnel 暴露到公网
  2. 启用认证:远程访问必须配置 Token 或密码认证
  3. 定期轮换 Token:每 90 天更新一次认证 Token
  4. 审查 Tailnet ACL:通过 Tailscale 管理后台限制哪些设备可以访问
// Tailscale ACL 示例(在 Tailscale 管理后台配置)
{
  "acls": [
    {
      "action": "accept",
      "src": ["group:admins"],
      "dst": ["tag:openclaw:443"]
    }
  ]
}

故障排查

Serve 启动后无法访问?

  • 确认 MagicDNS 已启用:tailscale debug prefs | grep MagicDNS
  • 检查 OpenClaw 是否在 18789 端口正常运行

Funnel 返回 502 错误?

  • 确认端口号在允许列表中(443/8443/10000)
  • 检查 OpenClaw 服务是否正常响应本地请求

Identity Headers 未注入?

  • 确认配置了 allowTailscale: true
  • 确认请求来自 Tailscale 网络(非本地直连)