Windows 远程自动化部署 OpenClaw:从零到一的完整教程
## 前言 OpenClaw 是一个开源的 AI 助手平台支持多模型、多渠道接入。本文将介绍如何通过 SSH 远程连接在另一台 Windows 电脑上自动部署 OpenClaw。 **适用场景** - 多台电脑批量部署 - 远程服务器配置 - 不想手动敲命令的懒人 **技术栈** - Windows 10/11 - OpenSSH Server - Node.js 24 - OpenClaw 2026.7.1-2 - Python paramikoSSH 客户端 --- ## 一、环境准备 ### 1.1 目标机器配置Windows 10 **开启 OpenSSH Server** powershell # 以管理员身份运行 PowerShell # 安装 OpenSSH Server Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # 启动服务 Start-Service sshd # 设置开机自启 Set-Service -Name sshd -StartupType Automatic # 检查防火墙规则 Get-NetFirewallRule -Name *ssh* **确认网络连通性** powershell # 查看本机 IP ipconfig # 假设 IP 为 192.168.3.93 ### 1.2 主力机配置已有 OpenClaw 确保主力机已安装 OpenClaw并配置好 AI 模型。 **测试 SSH 连接** bash # 在主力机上执行 ssh Administrator192.168.3.93 # 输入密码确认能登录 --- ## 二、通过 OpenClaw 自动安装 ### 2.1 建立连接 在 OpenClaw 对话中输入 帮我用 SSH 连接到 192.168.3.93用户名 Administrator密码 023456 OpenClaw 会自动执行以下 Python 脚本 python import paramiko import sys sys.stdout.reconfigure(encodingutf-8) c paramiko.SSHClient() c.set_missing_host_key_policy(paramiko.AutoAddPolicy()) c.connect(192.168.3.93, usernameAdministrator, password***, timeout10) # 测试连接 stdin, stdout, stderr c.exec_command(echo connected hostname) print(stdout.read().decode(utf-8)) c.close() **输出** connected DESKTOP-QL28LDF ### 2.2 安装 Node.js 检查 Node.js 版本 python stdin, stdout, stderr c.exec_command(node --version 21) out stdout.read().decode(utf-8, replace) print(Current node:, out.strip()) 如果版本低于 22.22.3需要升级 python # 下载 Node.js 24 LTS cmd powershell -Command Invoke-WebRequest -Uri https://nodejs.org/dist/v24.15.0/node-v24.15.0-x64.msi -OutFile C:\\Users\\Administrator\\node-v24.msi stdin, stdout, stderr c.exec_command(cmd) stdout.read() # 静默安装 cmd msiexec /i C:\\Users\\Administrator\\node-v24.msi /qn /norestart stdin, stdout, stderr c.exec_command(cmd) stdout.read() import time time.sleep(5) # 验证 stdin, stdout, stderr c.exec_command(node --version) print(New node:, stdout.read().decode(utf-8).strip()) **输出** New node: v24.15.0 ### 2.3 安装 OpenClaw python # 安装最新版 stdin, stdout, stderr c.exec_command(npm install -g openclawlatest 21) out stdout.read().decode(utf-8, replace) print(out[-1000:]) # 打印最后 1000 字符 # 验证版本 stdin, stdout, stderr c.exec_command(openclaw --version 21) print(stdout.read().decode(utf-8).strip()) **输出** OpenClaw 2026.7.1-2 (0790d9f) ### 2.4 写入配置文件 生成 openclaw.json python import json config { agents: { defaults: { workspace: C:\\Users\\Administrator\\.openclaw\\workspace, models: { qwen/qwen3.7-plus: {}, qwen/qwen3.6-plus: {} }, model: { primary: qwen/qwen3.6-plus, fallbacks: [qwen/qwen3.7-plus] } } }, gateway: { mode: local, auth: { mode: token, token: your-s…here }, port: 18789, bind: loopback, controlUi: { allowInsecureAuth: True } }, models: { mode: merge, providers: { qwen: { baseUrl: https://coding.dashscope.aliyuncs.com/v1, api: openai-completions, apiKey: ***, models: [ { id: qwen3.7-plus, name: qwen3.7-plus, reasoning: True, input: [text, image], cost: {input: 0, output: 0, cacheRead: 0, cacheWrite: 0}, contextWindow: 1000000, maxTokens: 65536 }, { id: qwen3.6-plus, name: qwen3.6-plus, reasoning: True, input: [text, image], cost: {input: 0, output: 0, cacheRead: 0, cacheWrite: 0}, contextWindow: 1000000, maxTokens: 65536 } ] } } }, auth: { profiles: { qwen:default: { provider: qwen, mode: api_key } } } } config_json json.dumps(config, indent2, ensure_asciiFalse) # 通过 SFTP 写入文件 sftp c.open_sftp() with sftp.file(C:\\Users\\Administrator\\.openclaw\\openclaw.json, w) as f: f.write(config_json) sftp.close() print(Config written successfully) ### 2.5 启动 Gateway **方案一使用 wmic推荐** python # 使用 wmic 创建后台进程 cmd ( wmic process call create \\C:\\Program Files\\nodejs\\node.exe\\ \\C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\openclaw\\openclaw.mjs\\ gateway run ) stdin, stdout, stderr c.exec_command(cmd) out stdout.read().decode(utf-8, replace) print(out) import time time.sleep(6) # 验证端口 stdin, stdout, stderr c.exec_command(netstat -an | findstr 18789.*LISTEN) out stdout.read().decode(utf-8, replace) print(Port 18789:, out.strip() if out.strip() else NOT listening) **方案二使用计划任务开机自启** python cmd ( schtasks /create /tn OpenClaw Gateway /tr \\C:\\Program Files\\nodejs\\node.exe\\ \\C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\openclaw\\openclaw.mjs\\ gateway run /sc onlogon /rl highest /f ) stdin, stdout, stderr c.exec_command(cmd) out stdout.read().decode(utf-8, replace) print(out) ### 2.6 验证安装 python stdin, stdout, stderr c.exec_command(openclaw status 21) out stdout.read().decode(utf-8, replace) print(out) **期望输出** OpenClaw status Overview --------------------------------------------------------------------------------------------------------------------- | Item | Value | --------------------------------------------------------------------------------------------------------------------- | OS | windows 10.0.19045 (x64) · node 24.15.0 | | Dashboard | http://127.0.0.1:18789/ | | Gateway | local · ws://127.0.0.1:18789 (local loopback) · reachable 123ms · auth token | | Gateway service | Scheduled Task not installed | | Agents | 1 · 1 bootstrap file present · sessions 1 · default main active 39m ago | | Sessions | 1 active · default qwen3.6-plus (1.0m ctx) | --------------------------------------------------------------------------------------------------------------------- --- ## 三、完整自动化脚本 将上述步骤整合为一个完整的 Python 脚本 python import paramiko import json import time import sys sys.stdout.reconfigure(encodingutf-8) # 配置参数 TARGET_IP 192.168.3.93 USERNAME Administrator PASSWORD *** API_KEY *** GATEWAY_TOKEN *** def main(): print( OpenClaw 远程自动安装脚本 \n) # 1. 建立 SSH 连接 print([1/6] 建立 SSH 连接...) c paramiko.SSHClient() c.set_missing_host_key_policy(paramiko.AutoAddPolicy()) c.connect(TARGET_IP, usernameUSERNAME, password*** timeout10) print(✓ 连接成功\n) # 2. 检查/安装 Node.js print([2/6] 检查 Node.js...) stdin, stdout, stderr c.exec_command(node --version 21) node_ver stdout.read().decode(utf-8).strip() print(f当前版本: {node_ver}) if v22.16 in node_ver or not found in node_ver.lower(): print(需要升级 Node.js...) # 下载并安装 Node.js 24 cmd powershell -Command Invoke-WebRequest -Uri https://nodejs.org/dist/v24.15.0/node-v24.15.0-x64.msi -OutFile C:\\Users\\Administrator\\node-v24.msi c.exec_command(cmd)[1].read() c.exec_command(msiexec /i C:\\Users\\Administrator\\node-v24.msi /qn /norestart)[1].read() time.sleep(5) stdin, stdout, stderr c.exec_command(node --version) print(f✓ 新版本: {stdout.read().decode(utf-8).strip()}\n) else: print(✓ Node.js 版本符合要求\n) # 3. 安装 OpenClaw print([3/6] 安装 OpenClaw...) stdin, stdout, stderr c.exec_command(npm install -g openclawlatest 21) stdout.read() # 等待完成 stdin, stdout, stderr c.exec_command(openclaw --version 21) print(f✓ {stdout.read().decode(utf-8).strip()}\n) # 4. 写入配置文件 print([4/6] 写入配置文件...) config { agents: { defaults: { workspace: C:\\Users\\Administrator\\.openclaw\\workspace, model: { primary: qwen/qwen3.6-plus, fallbacks: [qwen/qwen3.7-plus] } } }, gateway: { mode: local, auth: {mode: token, token: GATEWAY_TOKEN}, port: 18789, bind: loopback }, models: { providers: { qwen: { baseUrl: https://coding.dashscope.aliyuncs.com/v1, api: openai-completions, apiKey: API_KEY, models: [ {id: qwen3.7-plus, name: qwen3.7-plus, reasoning: True, input: [text, image], contextWindow: 1000000, maxTokens: 65536}, {id: qwen3.6-plus, name: qwen3.6-plus, reasoning: True, input: [text, image], contextWindow: 1000000, maxTokens: 65536} ] } } }, auth: { profiles: {qwen:default: {provider: qwen, mode: api_key}} } } sftp c.open_sftp() with sftp.file(C:\\Users\\Administrator\\.openclaw\\openclaw.json, w) as f: f.write(json.dumps(config, indent2)) sftp.close() print(✓ 配置完成\n) # 5. 启动 Gateway print([5/6] 启动 Gateway...) cmd ( wmic process call create \\C:\\Program Files\\nodejs\\node.exe\\ \\C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\openclaw\\openclaw.mjs\\ gateway run ) c.exec_command(cmd) time.sleep(6) stdin, stdout, stderr c.exec_command(netstat -an | findstr 18789.*LISTEN) port_status stdout.read().decode(utf-8).strip() if port_status: print(✓ Gateway 已启动端口 18789 监听中\n) else: print(✗ Gateway 启动失败\n) # 6. 设置开机自启 print([6/6] 设置开机自启...) cmd ( schtasks /create /tn OpenClaw Gateway /tr \\C:\\Program Files\\nodejs\\node.exe\\ \\C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\openclaw\\openclaw.mjs\\ gateway run /sc onlogon /rl highest /f ) stdin, stdout, stderr c.exec_command(cmd) out stdout.read().decode(utf-8, replace) if 成功 in out or success in out.lower(): print(✓ 计划任务创建成功\n) else: print(✗ 计划任务创建失败\n) # 完成 print( 安装完成 ) print(fDashboard: http://{TARGET_IP}:18789/) print(注意Dashboard 只能在本机访问bind: loopback) c.close() if __name__ __main__: main() --- ## 四、常见问题 ### Q1: SSH 连接超时 **解决方案** 1. 确认目标机器已开机并联网 2. 检查 IP 地址是否正确ipconfig 3. 确认 OpenSSH Server 服务已启动Get-Service sshd 4. 检查防火墙是否放行 22 端口 ### Q2: Node.js 版本不兼容 **错误信息** openclaw: Node.js 22.22.3 23, 24.15.0 25, or 25.9.0 is required **解决方案** 下载并安装最新版 Node.js LTS https://nodejs.org/dist/v24.15.0/node-v24.15.0-x64.msi ### Q3: Gateway 启动失败 **排查步骤** 1. 检查端口是否被占用netstat -an | findstr 18789 2. 查看日志type C:\Users\Administrator\.openclaw\gw.log 3. 尝试前台运行看错误openclaw gateway run **解决方案** 使用 wmic 创建独立进程而不是 start /b。 ### Q4: 配置文件格式错误 **解决方案** 确保 JSON 格式正确可以使用在线 JSON 校验工具 https://jsonlint.com/ --- ## 五、安全建议 1. **修改默认密码**安装完成后立即修改 SSH 密码 2. **使用强 Token**Gateway token 建议使用随机生成的长字符串 3. **API Key 保护**不要将 API Key 提交到 Git 仓库 4. **防火墙配置**如果不需要远程访问保持 bind: loopback 5. **定期更新**运行 npm update -g openclaw 保持最新版本 --- ## 六、总结 通过本文的教程我们实现了 ✅ 通过 SSH 远程连接 Windows 电脑 ✅ 自动安装 Node.js 和 OpenClaw ✅ 自动写入配置文件 ✅ 启动 Gateway 并设置开机自启 整个过程无需在目标机器上手动操作适合批量部署或远程维护场景。 **相关资源** - OpenClaw GitHubhttps://github.com/openclaw/openclaw - OpenClaw 文档https://docs.openclaw.ai - Node.js 下载https://nodejs.org/ - openshh 下载https://freeshelf.cn/ --- *如果本文对你有帮助欢迎点赞、收藏、关注。有问题欢迎评论区讨论。*

相关新闻

游戏音频管理系统开发:从资源加载到播放控制的完整实现

游戏音频管理系统开发:从资源加载到播放控制的完整实现

在实际游戏开发或多媒体项目中,音效和背景音乐(BGM)的管理与播放是一个看似基础但极易出错的环节。很多开发者只关注了如何调用播放接口,却忽略了资源加载策略、生命周期管理、异常处理以及不同场景下的音量控制逻辑。这些问题在测…

2026/7/22 1:56:07阅读更多 →
技术开锁工:从环境调试到自动化运维的核心技能体系

技术开锁工:从环境调试到自动化运维的核心技能体系

在技术团队中,总有一些角色看似平凡却不可或缺——他们不是架构师,不负责核心算法,却在关键时刻成为项目推进的关键支点。今天要讨论的"技术开锁工",正是这样一个特殊群体:他们擅长解决那些看似琐碎却阻塞流…

2026/7/22 1:56:07阅读更多 →
Kafka单节点与集群部署配置及调优指南

Kafka单节点与集群部署配置及调优指南

1. Kafka单节点与集群部署核心逻辑解析作为分布式消息系统的标杆,Kafka的部署模式选择直接影响系统可靠性与扩展性。单节点模式适合开发测试环境快速验证,而生产环境必须采用集群部署来保证高可用。这两种部署方式在ZooKeeper依赖、配置文件参数、服务启…

2026/7/22 1:56:07阅读更多 →
ARM day5

ARM day5

1. 什么是 GIC?🔸 GIC 全称GIC(Generic Interrupt Controller,通用中断控制器),是 ARM 公司专门为 Cortex-A 系列 内核设计的一款集中式中断控制器。🔸 为什么需要 GIC?随着 SoC&…

2026/7/22 4:34:29阅读更多 →
C++自定义内存管理:资源受限环境下的固定大小内存池实现

C++自定义内存管理:资源受限环境下的固定大小内存池实现

1. 项目概述:为什么要在资源受限环境中自定义内存管理?在嵌入式系统、物联网设备、游戏引擎或者高频交易系统里工作过的C开发者,对“内存”这个词的感受,和写桌面应用或Web后端的同行截然不同。在这些资源受限的环境里&#xff0c…

2026/7/22 4:34:29阅读更多 →
Cocos Creator 2.x安卓打包全流程:从环境配置到APK发布实战

Cocos Creator 2.x安卓打包全流程:从环境配置到APK发布实战

1. 项目概述与核心价值最近在整理过往项目资料时,翻到了一个用Cocos Creator 2.4.15版本开发的棋牌游戏源码。这算是一个比较有“情怀”的项目了,它不像现在市面上那些动辄3D、特效拉满的重度游戏,而是专注于还原经典棋牌玩法,比如…

2026/7/22 4:34:29阅读更多 →
Unity 3D毕设选题指南:六大前沿方向与实战避坑策略

Unity 3D毕设选题指南:六大前沿方向与实战避坑策略

1. 项目概述:为什么Unity 3D是计算机专业毕设的“黄金赛道”?又到了一年一度让计算机专业同学“头秃”的毕设选题季。看着身边同学有的在卷算法,有的在搞Web应用,你是不是也在纠结:我的毕设到底该做什么,才…

2026/7/22 4:34:29阅读更多 →
【开题神器】专业级一键生成论文工具:研究框架、文献综述一键搭建

【开题神器】专业级一键生成论文工具:研究框架、文献综述一键搭建

每到开题季,无数本硕学子都会陷入同款困境:选题无思路、研究框架逻辑混乱、翻阅上百篇文献仍写不出合格综述、参考文献格式反复出错、熬夜搭建结构却被导师全盘打回。传统手工梳理文献、徒手搭建研究框架的模式耗时耗力,稍有疏漏就会延误开题…

2026/7/22 4:34:29阅读更多 →
Unity 3D音效实战:AudioSource核心参数配置与沉浸感提升指南

Unity 3D音效实战:AudioSource核心参数配置与沉浸感提升指南

1. 项目概述:为什么3D音效是沉浸感的关键拼图在Unity里做项目,尤其是涉及到角色扮演、第一人称射击或者任何需要空间感的体验时,视觉上的3D模型和光照渲染大家都很上心,但声音这一块,却常常被当成“背景音乐”或“音效…

2026/7/22 4:32:29阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →