通过 SSH 隧道 + Tailscale 实现跨设备安全访问 OpenClaw Control UI。
当你想在 A 电脑(Windows/Mac)访问运行在 B 电脑(WSL/Ubuntu)上的 OpenClaw Control UI 时,会遇到:
- ❌ 直接 HTTP 访问被浏览器 Device Identity 策略阻止
- ❌ 局域网 IP 访问需要配置防火墙
- ❌ 公网暴露不安全
解决方案:SSH 隧道 + Tailscale
-
B 电脑(运行 OpenClaw 的机器):
- 安装并运行 OpenClaw Gateway
- 安装 Tailscale 并登录
- SSH 服务已启动
-
A 电脑(访问控制界面的机器):
- 安装 Tailscale 并登录(与 B 电脑同一账户)
- 安装 SSH 客户端(Windows 10+ 自带)
在 B 电脑 运行:
tailscale ip
whoami记下输出的 IP 地址和用户名
打开命令提示符(CMD)或 PowerShell:
ssh -N -L 18789:127.0.0.1:18789 your_username@your_tailscale_ip替换
your_username为你的用户名,your_tailscale_ip为 B 电脑的 Tailscale IP
http://localhost:18789
✅ 现在可以正常登录 OpenClaw Control UI 了!
┌─────────────┐ SSH Tunnel ┌─────────────┐
│ A 电脑 │ ──────────────────► │ B 电脑 │
│ 浏览器 │ localhost:18789 │ OpenClaw │
│ │ │ :18789 │
└─────────────┘ └─────────────┘
│ │
└───── Tailscale 虚拟网络 ──────────┘
- SSH 隧道:将 B 电脑的 18789 端口转发到 A 电脑的 localhost:18789
- localhost:浏览器认为是本地访问,允许 Device Identity
- Tailscale:加密虚拟网络,不受物理网络限制
ssh: connect to host your_tailscale_ip port 22: Connection timed out
解决: 在 B 电脑启动 SSH 服务
# Ubuntu/WSL
sudo service ssh start
# 或
sudo systemctl start sshd第一次连接会提示输入密码。在 B 电脑 设置密码:
sudo passwd your_username在 A 电脑 生成密钥:
ssh-keygen -t ed25519复制公钥到 B 电脑:
type .ssh\id_ed25519.pub | ssh your_username@your_tailscale_ip "mkdir -p .ssh && cat >> .ssh/authorized_keys"Windows(PowerShell):
Start-Process ssh -ArgumentList "-N -L 18789:127.0.0.1:18789 your_username@your_tailscale_ip" -WindowStyle HiddenMac/Linux:
ssh -f -N -L 18789:127.0.0.1:18789 your_username@your_tailscale_ip创建 connect.bat:
@echo off
echo 正在连接到 OpenClaw...
ssh -N -L 18789:127.0.0.1:18789 jsonxyj@YOUR_TAILSCALE_IPWin + R输入shell:startup- 将
connect.bat的快捷方式放入启动文件夹
- OpenClaw 默认端口:
18789 - Tailscale 官网:https://tailscale.com
- 本方案同样适用于其他需要跨设备访问本地服务的场景
MIT