SSH隧道+容器隔离双重防护,新手也能轻松上手,低配置也有高安全
📌 导读
本教程将带你从零开始在阿里云服务器上部署 OpenClaw,采用 Docker 容器化方案实现环境隔离,并通过 SSH 隧道安全访问管理界面。文章包含完整的命令代码、故障排查方案和安全加固建议,适合有一定 Linux 基础的用户。
一、为什么选择Docker部署?
Docker容器化部署相比直接在服务器上安装,具有以下核心安全优势:
| 安全特性 | Docker部署 | 直接部署 |
|---|---|---|
| 权限隔离 | 容器内进程被限制,无法操作宿主机 | 进程直接运行在宿主机,被攻破即全盘沦陷 |
| 文件系统保护 | 根文件系统只读,恶意代码无法写入 | 任意文件可读写,易被植入后门 |
| 资源限制 | 可限制CPU/内存,防止挖矿等攻击 | 无限制,恶意程序可耗尽资源 |
| 快速恢复 | 容器被污染后秒级重建 | 需要重装系统或逐文件排查 |
根据国家互联网应急中心(CNCERT)与中国网络空间安全协会联合发布的《OpenClaw安全使用实践指南》,Docker容器化是推荐的隔离方案之一,可有效防止攻击者从OpenClaw突破到宿主机。
二、准备工作
2.1 服务器环境确认
登录服务器,确认系统信息:
# 登录服务器(注意端口号)
ssh -p 23561 root@你的服务器IP
# 确认系统版本
cat /etc/os-release
本教程基于 Alibaba Cloud Linux 3(兼容CentOS 8)环境编写,其他Linux发行版可适当调整命令。
2.2 创建项目目录
# 创建OpenClaw专用目录
mkdir -p /opt/openclaw/config /opt/openclaw/logs
cd /opt/openclaw
2.3 配置SWAP交换空间(2核2G内存优化)
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
三、安装Docker
3.1 安装必要插件(Alibaba Cloud Linux 3专用)
# 安装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
3.2 安装Docker
# 安装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镜像加速
国内访问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
如果看到配置的镜像源地址,说明加速已生效。
五、部署OpenClaw
5.1 创建配置文件(⚠️ 关键:配置必须正确)
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会自动处理安全配置,最简配置即可正常运行
5.2 创建docker-compose.yml
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
5.3 创建环境变量文件
# 生成随机Token(保存好,只显示一次)
echo "OPENCLAW_TOKEN=$(openssl rand -hex 32)" > /opt/openclaw/.env
# 设置权限(仅所有者可读)
chmod 600 /opt/openclaw/.env
# 查看并保存Token
cat /opt/openclaw/.env
⚠️ 重要:输出的Token请妥善保存,后续登录需要用到。
5.4 启动OpenClaw
cd /opt/openclaw
docker compose up -d
5.5 验证部署
# 查看容器状态
docker compose ps
# 测试服务是否正常(关键步骤)
curl http://localhost:23478/health
成功输出:{"ok":true,"status":"live"}
如果返回这个结果,说明部署成功!
六、配置SSH隧道访问
OpenClaw端口只绑定到127.0.0.1,无法直接从公网访问。需要通过SSH隧道将远程端口映射到本地。
6.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参数,否则会登录到服务器而不是建立隧道
6.2 在浏览器访问
打开浏览器,访问:
http://localhost:18789
页面会提示输入Gateway Token,输入之前在.env文件中生成的Token即可登录。
七、安全加固配置
7.1 阿里云安全组配置
登录阿里云控制台 → 云服务器ECS → 安全组:
入方向规则:
| 端口范围 | 授权对象 | 说明 |
|---|---|---|
| 23561(TCP) | 你的家庭公网IP | SSH管理(建议限制来源IP) |
| 23478(TCP) | 不开放 | 通过SSH隧道访问,无需开放 |
⚠️ 关键:不要在安全组中开放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
九、故障排查
9.1 容器无法启动或不断重启
原因:配置文件包含旧版不兼容的字段
解决方法:
# 确保配置文件只有gateway配置
cat > /opt/openclaw/config/openclaw.json << 'EOF'
{
"gateway": {
"bind": "0.0.0.0",
"port": 18789,
"auth": { "mode": "token" }
}
}
EOF
# 重启容器
docker compose restart
9.2 curl返回 Connection reset by peer
原因:服务未正常启动
解决方法:
# 查看日志定位问题
docker compose logs --tail=50
# 确认配置文件正确
cat /opt/openclaw/config/openclaw.json
# 重启容器
docker compose restart
sleep 5
curl http://localhost:23478/health
9.3 浏览器报 origin not allowed
原因:SSH隧道命令忘记加 -N 参数
解决方法:
# 正确命令(本地电脑执行,注意加 -N)
ssh -p 23561 -L 18789:127.0.0.1:23478 root@你的服务器IP -N
9.4 镜像拉取慢或失败
解决方法:
# 使用国内镜像加速(已配置)
# 或手动拉取
docker compose pull
# 重新启动
docker compose up -d
9.5 端口被占用
# 检查端口是否被占用
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日联合发布)
-
华为云帮助中心:《OpenClaw 开始使用》文档
-
华为云帮助中心:《OpenClaw 准备工作》文档
-
阿里云容器镜像服务:《官方镜像加速》文档
-
OpenClaw官方文档:《Docker部署指南》
部署完成后,你就可以通过 http://localhost:18789 安全地访问OpenClaw管理界面了。
如果在配置过程中遇到任何问题,可以查阅上述参考资料或根据报错信息进行排查。
版权声明:本文为原创技术教程,欢迎转载,请注明出处。 更新日期:2026年4月8日