SSH隧道+容器隔离双重防护,新手也能轻松上手,低配置也有高安全
本教程将带你从零开始在阿里云服务器上部署 OpenClaw,采用 Docker 容器化方案实现环境隔离,并通过 SSH 隧道安全访问管理界面。文章包含完整的命令代码、故障排查方案和安全加固建议,适合有一定 Linux 基础的用户。
Docker容器化部署相比直接在服务器上安装,具有以下核心安全优势:
根据国家互联网应急中心(CNCERT)与中国网络空间安全协会联合发布的《OpenClaw安全使用实践指南》,Docker容器化是推荐的隔离方案之一,可有效防止攻击者从OpenClaw突破到宿主机。
登录服务器,确认系统信息:
# 登录服务器(注意端口号) ssh -p 23561 root@你的服务器IP # 确认系统版本 cat /etc/os-release
本教程基于 Alibaba Cloud Linux 3(兼容CentOS 8)环境编写,其他Linux发行版可适当调整命令。
# 创建OpenClaw专用目录 mkdir -p /opt/openclaw/config /opt/openclaw/logs cd /opt/openclaw
2核2G内存运行Docker可能紧张,建议增加SWAP空间:
# 增加2GB swap空间 dd if=/dev/zero of=/swapfile bs=1M count=2048 chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab # 验证swap已启用 free -h
# 安装dnf源兼容插件(关键步骤) sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus # 添加Docker官方源 sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
# 安装Docker及相关组件 sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 启动Docker sudo systemctl start docker sudo systemctl enable docker # 验证安装(示例输出,实际版本号可能更高) docker --version # 示例输出:Docker version 26.1.3, build b72abbb docker compose version # 示例输出:Docker Compose version v2.27.0
📌 说明:以上版本号为示例,实际安装时版本号可能更高,以你服务器实际输出为准,不影响后续使用。
国内访问Docker Hub较慢,配置镜像加速器可大幅提升镜像拉取速度。
# 创建配置文件 mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://registry.cn-hangzhou.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ] } EOF # 重启Docker使配置生效 sudo systemctl daemon-reload sudo systemctl restart docker # 验证加速是否生效 docker info | grep "Registry Mirrors" -A 5
如果看到配置的镜像源地址,说明加速已生效。
cat > /opt/openclaw/config/openclaw.json << 'EOF' { "gateway": { "bind": "0.0.0.0", "port": 18789, "auth": { "mode": "token" } } } EOF
⚠️ 重要说明:
bind: "0.0.0.0"允许容器外访问(必须配置)- 不要添加
controlUi、agents、tools、approvals等旧版配置字段,否则容器无法启动- 新版OpenClaw会自动处理安全配置,最简配置即可正常运行
cat > /opt/openclaw/docker-compose.yml << 'EOF' services: openclaw: image: ghcr.io/openclaw/openclaw:latest container_name: openclaw-gateway restart: unless-stopped # ===== 安全加固配置 ===== cap_drop: - ALL # 丢弃所有Linux Capabilities read_only: true # 只读根文件系统 user: "1000:1000" # 非root用户运行 security_opt: - no-new-privileges:true # 禁止获取新权限 # ===== 网络配置 ===== ports: - "127.0.0.1:23478:18789" # ===== 数据持久化 ===== volumes: - ./config:/home/node/.openclaw:ro - ./logs:/home/node/logs:rw tmpfs: - /tmp:rw,noexec,nosuid,size=256m # ===== 环境变量 ===== environment: - NODE_ENV=production - LOG_LEVEL=info - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_TOKEN} # ===== 资源限制(适配2核2G)===== deploy: resources: limits: memory: 1536M networks: default: driver: bridge EOF
# 生成随机Token(保存好,只显示一次) echo "OPENCLAW_TOKEN=$(openssl rand -hex 32)" > /opt/openclaw/.env # 设置权限(仅所有者可读) chmod 600 /opt/openclaw/.env # 查看并保存Token cat /opt/openclaw/.env
⚠️ 重要:输出的Token请妥善保存,后续登录需要用到。
cd /opt/openclaw docker compose up -d
# 查看容器状态 docker compose ps # 测试服务是否正常(关键步骤) curl http://localhost:23478/health
成功输出:{"ok":true,"status":"live"}
如果返回这个结果,说明部署成功!
OpenClaw端口只绑定到127.0.0.1,无法直接从公网访问。需要通过SSH隧道将远程端口映射到本地。
Windows(PowerShell或CMD):
ssh -p 23561 -L 18789:127.0.0.1:23478 root@你的服务器IP -N
macOS / Linux:
ssh -p 23561 -L 18789:127.0.0.1:23478 root@你的服务器IP -N
参数说明:
-p 23561:指定SSH端口-L 18789:127.0.0.1:23478:将本地18789端口转发到服务器的23478端口-N:必须加,不执行远程命令,只做端口转发
⚠️ 重要提示:
- 执行后终端会卡住不动,这是正常现象,表示隧道正在运行
- 请保持这个终端窗口打开,关闭后隧道会断开
- 不要忘记
-N参数,否则会登录到服务器而不是建立隧道
打开浏览器,访问:
http://localhost:18789
页面会提示输入Gateway Token,输入之前在.env文件中生成的Token即可登录。
登录阿里云控制台 → 云服务器ECS → 安全组:
入方向规则:
⚠️ 关键:不要在安全组中开放23478端口!只通过SSH隧道访问。
# 进入项目目录 cd /opt/openclaw # 查看容器状态 docker compose ps # 查看实时日志 docker compose logs -f # 重启服务 docker compose restart # 停止服务 docker compose down # 启动服务 docker compose up -d # 更新镜像 docker compose pull docker compose up -d # 查看Token cat /opt/openclaw/.env
原因:配置文件包含旧版不兼容的字段
解决方法:
# 确保配置文件只有gateway配置 cat > /opt/openclaw/config/openclaw.json << 'EOF' { "gateway": { "bind": "0.0.0.0", "port": 18789, "auth": { "mode": "token" } } } EOF # 重启容器 docker compose restart
原因:服务未正常启动
解决方法:
# 查看日志定位问题 docker compose logs –tail=50
# 确认配置文件正确 cat /opt/openclaw/config/openclaw.json
# 重启容器 docker compose restart sleep 5 curl http://localhost:23478/health
原因:SSH隧道命令忘记加 -N 参数
解决方法:
# 正确命令(本地电脑执行,注意加 -N) ssh -p 23561 -L 18789:127.0.0.1:23478 root@你的服务器IP -N
解决方法:
# 使用国内镜像加速(已配置) # 或手动拉取 docker compose pull
# 重新启动 docker compose up -d
# 检查端口是否被占用 netstat -tlnp | grep 23478
# 如果被占用,修改docker-compose.yml中的端口 # 将 “127.0.0.1:23478:18789” 改为 “127.0.0.1:新端口:18789”
agents.defaults.workspacePath 容器无法启动 只保留
gateway 配置 添加
tools.allow /
tools.deny 容器无法启动 新版自动处理,无需配置 添加
controlUi.allowedOrigins 容器无法启动 新版自动添加白名单
bind: “loopback” 容器外无法访问 使用
bind: “0.0.0.0” SSH命令忘记
-N 隧道不生效 必须加
-N 参数 安全组开放23478端口 暴露服务,增加风险 不开放,只用SSH隧道
ports: 23478:18789 ✅ 仅本地监听
127.0.0.1:23478 ✅ SSH隧道访问 不在安全组开放端口 ✅ Token认证
.env随机Token ✅ 容器非root运行
user: “1000:1000” ✅ 只读根文件系统
read_only: true ✅ 资源限制
deploy.resources.limits.memory ✅
本教程参考了以下官方文档和安全指南:
- 国家互联网应急中心(CNCERT)与中国网络空间安全协会:《OpenClaw安全使用实践指南》(2026年3月22日联合发布)
- 来源:news.dayoo.com/finance/202…
- 华为云帮助中心:《OpenClaw 开始使用》文档
- 来源:support.huaweicloud.com/openclaw-ai…
- 华为云帮助中心:《OpenClaw 准备工作》文档
- 来源:support.huaweicloud.com/openclaw-ai…
- 阿里云容器镜像服务:《官方镜像加速》文档
- 来源:help.aliyun.com/zh/acr/user…
- OpenClaw官方文档:《Docker部署指南》
- 来源:docs.openclaw.ai/install/doc…
部署完成后,你就可以通过 http://localhost:18789 安全地访问OpenClaw管理界面了。
如果在配置过程中遇到任何问题,可以查阅上述参考资料或根据报错信息进行排查。
版权声明:本文为原创技术教程,欢迎转载,请注明出处。 更新日期:2026年4月8日
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/273970.html