OpenClaw 远程模式:给你的电脑做个 AI 分身

279 阅读4分钟

OpenClaw 远程模式:给你的电脑做个 AI 分身

封面图

你有多台设备吗?工作机、云服务器、或者家里闲置的一台电脑?

我把闲置设备变成了工作机的「AI 分身」:

  • 跨设备调用:工作机一行命令,远程机器执行
  • 耗时任务分流:让分身跑长任务,工作机继续干活
  • SSH 免登录:随时连上去修复、排错、查日志

现在一行命令,两台设备协同工作 👇

适用范围:本文以两台 Mac 同一局域网为例,但方案适用于任何 SSH 可达的设备(Linux 服务器、云主机、WireGuard/Tailscale 组网等)。


📌 划重点

项目
工作电脑192.168.31.195,用户 dev
远程主机192.168.31.106,用户 botdev
连接方式SSH 隧道 + OpenClaw Remote Mode
本地端口28789 → 远程 18789

最终效果

  • openclaw agent -m "消息" → 远程主机的 AI 执行
  • ssh openclaw → 免密登录,随时排错
  • Skill 封装 → AI 自动调用远程操作

🎯 使用场景

场景一:AI 分身

工作机专注开发,远程主机跑 AI 任务:

  • 远程主机有 Claude Max 订阅
  • 工作机调用远程 Agent,不占本地资源
  • 耗时任务(搜索、写文章)让分身去跑

场景二:运维后门

SSH 免登录 = 随时能连上去:

  • 查看远程主机状态
  • 修复配置问题
  • 重启服务

场景三:多机协作

打通调用链路后,可以扩展到多台机器(见 02-群控模式)。


🔧 配置流程

Step 1: 开启远程主机 SSH

在远程主机上:系统设置 → 通用 → 共享 → 打开「远程登录」

💡 局域网内开 SSH 是安全的,外网无法直接访问内网 IP。

Step 2: 配置 SSH 免密登录

工作电脑上运行:

# 复制公钥到远程主机
ssh-copy-id botdev@192.168.31.106

# 验证免密登录
ssh botdev@192.168.31.106 "echo '✅ 免密登录成功' && hostname"

Step 3: 配置 SSH 隧道

创建 ~/.ssh/config

# 远程主机 - OpenClaw Gateway
Host openclaw
    HostName 192.168.31.106
    User botdev
    LocalForward 28789 127.0.0.1:18789
    ServerAliveInterval 60
    ServerAliveCountMax 3

💡 本地用 28789 端口,避免和本地 OpenClaw(18789)冲突。

Step 4: 获取远程 Gateway Token

ssh openclaw "source ~/.zshrc; cat ~/.openclaw/openclaw.json | jq '.gateway.auth.token'"

Step 5: 配置 OpenClaw Remote Mode

修改工作电脑的 ~/.openclaw/openclaw.json

{
  "gateway": {
    "mode": "remote",
    "remote": {
      "url": "ws://127.0.0.1:28789",
      "token": "your-gateway-token-here",
      "sshTarget": "openclaw"
    }
  }
}

Step 6: 验证连接

# 启动 SSH 隧道
ssh -fN openclaw

# 检查状态
openclaw status

输出应显示远程主机信息:

{
  "mode": "remote",
  "url": "ws://127.0.0.1:28789",
  "reachable": true,
  "self": {
    "host": "botdevdeMacBook-Air.local",
    "ip": "192.168.31.106"
  }
}


📋 最终配置清单

工作电脑 ~/.ssh/config

Host openclaw
    HostName 192.168.31.106
    User botdev
    LocalForward 28789 127.0.0.1:18789
    ServerAliveInterval 60
    ServerAliveCountMax 3

工作电脑 ~/.openclaw/openclaw.json

{
  "gateway": {
    "mode": "remote",
    "remote": {
      "url": "ws://127.0.0.1:28789",
      "token": "your-gateway-token-here",
      "sshTarget": "openclaw"
    }
  }
}


🚀 日常使用

# 启动隧道(后台运行)
ssh -fN openclaw

# 调用远程 Agent
openclaw agent --agent main -m "帮我写一篇博客"

# 关闭隧道
pkill -f "ssh -fN openclaw"


🔌 进阶:封装成 Skill

配置完成后,我们把 SSH 远程操作封装成 Skill,让 AI 可以自动调用。

Skill 目录结构


ssh-remote-ops/
├── SKILL.md
└── scripts/
    ├── ssh-status.sh
    ├── ssh-exec.sh
    └── tunnel-manager.sh

SKILL.md

---
name: ssh-remote-ops
description: |
  SSH 远程主机操作技能。用于:
  (1) 检查远程主机状态
  (2) 在远程主机执行命令
  (3) 管理 SSH 隧道
  当用户说"检查远程主机"、"在远程执行"、"启动隧道"时使用此技能。
---

# SSH Remote Operations

## 可用脚本

### 检查远程主机状态

```bash
bash scripts/ssh-status.sh

在远程主机执行命令

bash scripts/ssh-exec.sh "命令"

管理 SSH 隧道

bash scripts/tunnel-manager.sh start|stop|status


### scripts/ssh-status.sh

```bash
#!/bin/bash
# 检查远程主机状态

SSH_HOST="openclaw"

echo "📡 检查远程主机连接..."
if ssh -o ConnectTimeout=5 $SSH_HOST "echo 'connected'" &>/dev/null; then
    echo "✅ SSH 连接正常"

    echo ""
    echo "📊 远程主机信息:"
    ssh $SSH_HOST "hostname && uptime"

    echo ""
    echo "🤖 OpenClaw 状态:"
    ssh $SSH_HOST "source ~/.zshrc 2>/dev/null; openclaw status 2>/dev/null || echo '未安装 OpenClaw'"
else
    echo "❌ SSH 连接失败"
    exit 1
fi

scripts/ssh-exec.sh

#!/bin/bash
# 在远程主机执行命令

SSH_HOST="openclaw"
COMMAND="$*"

if [ -z "$COMMAND" ]; then
    echo "用法: ssh-exec.sh <命令>"
    exit 1
fi

echo "🚀 在远程主机执行: $COMMAND"
ssh $SSH_HOST "source ~/.zshrc 2>/dev/null; $COMMAND"

scripts/tunnel-manager.sh

#!/bin/bash
# SSH 隧道管理

SSH_HOST="openclaw"
LOCAL_PORT="28789"

case "$1" in
    start)
        if pgrep -f "ssh -fN $SSH_HOST" > /dev/null; then
            echo "⚠️ 隧道已在运行"
        else
            ssh -fN $SSH_HOST
            echo "✅ 隧道已启动 (本地端口: $LOCAL_PORT)"
        fi
        ;;
    stop)
        pkill -f "ssh -fN $SSH_HOST"
        echo "✅ 隧道已关闭"
        ;;
    status)
        if pgrep -f "ssh -fN $SSH_HOST" > /dev/null; then
            echo "✅ 隧道运行中"
            lsof -i :$LOCAL_PORT 2>/dev/null | head -2
        else
            echo "❌ 隧道未运行"
        fi
        ;;
    *)
        echo "用法: tunnel-manager.sh start|stop|status"
        ;;
esac

使用示例

配置好 Skill 后,AI 可以自动调用:


用户: 检查一下远程主机状态
AI: 我来检查远程主机状态
    → 执行 bash scripts/ssh-status.sh
    → 返回:✅ SSH 连接正常,OpenClaw 运行中

用户: 在远程主机上拉取最新代码
AI: 好的,我来在远程执行 git pull
    → 执行 bash scripts/ssh-exec.sh "cd ~/projects/main && git pull"
    → 返回:Already up to date.


💡 常见问题

问题原因解决
SSH Connection refused远程主机没开 SSH系统设置开启远程登录
端口配置错误SSH 隧道用 28789,配置写 18789统一端口号
OpenClaw unreachable隧道没启动ssh -fN openclaw

🔗 参考资料


📝 一句话总结

SSH 隧道 + Remote Mode = 给电脑做个 AI 分身,工作机当遥控器,远程主机当执行者。


💬 你的场景是什么?

  • 工作机 + 云服务器?
  • 本地 + 家里闲置电脑?
  • 还是想让 AI 自动管理多台机器?

评论区聊聊你的使用场景!下一篇讲「群控模式:一人操控多台 AI」👇