# 8.4 远程访问：SSH、内网穿透与零信任

本节讨论 OpenClaw 远程运维的目标：在保证可达性的前提下，尽量减少暴露面，并提供可快速吊销的访问机制。

> \[!NOTE] 本节讨论的隧道、零信任和凭据管理属于基础设施层面的通用实践，需要在宿主机或网络层面自行搭建。OpenClaw 自身不内建远程访问组件。

## 8.4.1 入口原则：管理面默认不公网暴露

远程运维首先要控制入口暴露面。

* 不把管理端口长期暴露在公网。
* 管理面与业务面分离，避免同一入口承载高权限操作和对外业务流量。
* 访问链路必须可审计，能追溯“谁在何时做了什么”。

## 8.4.2 推荐拓扑：专用通道优先

**默认安全路径：SSH 隧道或 Tailscale Serve**

1. **SSH 隧道（Port Forwarding）**。对于仅需命令行排障或偶尔打开 Web 控制台的场景，通过堡垒机或跳板机进行 `ssh -L 18789:localhost:18789 user@host` 转发，实现安全轻量的本地访问。零额外依赖，是最通用的安全路径。
2. **Tailscale Serve（推荐）**。OpenClaw Gateway CLI 提供了与 Tailscale 集成的能力（`--tailscale`），使得设备无需公网 IP 即可建立安全的点对点访问，并内置证书校验。配合 `tailscale serve` 可将 Dashboard 安全暴露给 Tailnet 内的设备——**仅 Tailnet 内可达，不对公网开放**，是长期运维场景下的推荐方案。

**需要额外论证的例外路径：**

3. **Tailscale Funnel（公网暴露）**。与 Serve 不同，`tailscale funnel` 会将服务暴露到公网，任何人都可以通过 HTTPS URL 访问。只有在确实需要外部系统（如 Webhook 回调、第三方 CI/CD 触发）访问 Gateway 时才应启用，并且必须配合 `gateway.controlUi.allowedOrigins` 收敛访问范围。
4. **临时端口转发与 allowedOrigins**。若确需绑定非环回（non-loopback）地址暴露 Dashboard，必须在配置中显式声明 `gateway.controlUi.allowedOrigins`，否则网关安全护栏将拒绝启动，并强制阻断跨域请求。

> \[!WARNING] Serve 和 Funnel 的安全边界完全不同：Serve 仅限 Tailnet 内部访问，Funnel 对公网开放。如果不确定，选 Serve。

无论选型如何，核心是“先建受信网络，再放行管理操作”。

## 8.4.3 身份与权限：最小权限和短期凭据

远程访问建议采用：

* 禁用密码登录，使用密钥或证书认证。
* 按角色分配最小权限，不共用管理员账号。
* 使用短期凭据并定期轮换，降低泄露后影响范围。

## 8.4.4 文件同步方案：把远程成果拿回来

当 OpenClaw 部署在云服务器时，智能体整理的素材、报告、代码等成果都存储在远程硬盘上。工程实践中，推荐建立可控的文件双向同步机制，将“云端工作区”无缝映射到本地：

**1. rclone 远程挂载（强烈推荐）**

通过 `rclone mount` 将服务器上的工作区目录直接挂载为 Mac/Linux 本地磁盘。

* **优点**：免费、实时、原生支持，无需在服务器端安装同步守护进程（走原生 SFTP）。
* **优化参数经验**：默认挂载较慢且易断，建议增加 `--vfs-cache-mode full`（利用本地缓存提速读写）、`--sftp-connections 8`（增加并发数）、`--sftp-idle-timeout 0`（防止超时断联）。

**2. 坚果云等企业云盘同步**

在服务器与本地同时安装客户端，指定工作区目录进行双向同步。

* **优点**：搭建门槛极低，开箱即用。
* **缺点**：如果智能体高频读写或生成大量临时文件，容易耗尽同步流量池；冲突解决机制对开发者不够透明。

**3. 轻量级网盘服务（File Browser）**

如果只需要手机端偶尔查看文件，不需要重度编辑，可以在服务器裸起一个基于 Web 的文件浏览器（如 [File Browser](https://filebrowser.org/)），通过浏览器随时访问、下载生成的报告。需配合 8.4.1 的安全入口原则使用。

## 8.4.5 浏览器远程接管：KasmVNC 应对人机协作

当智能体在云端运行 L2（有头浏览器）进行自动化操作时，经常会遇到复杂验证码（如滑块、行为验证）或需要二次确认。如果仅依赖截图（L3），往往无法成功突破这些安全策略。

实践中，可以在服务器安装基于 Web 的远程桌面服务（如 [KasmVNC](https://kasmweb.com/)）。

1. 当智能体遭遇验证码界面时，通知用户。
2. 用户通过本地浏览器连接 KasmVNC，接管云端鼠标与键盘。
3. 协助智能体通过验证码后，关闭连接，智能体继续执行后续工具流程。

这种“平时无人干预，受阻时人工接管”模式是在自动化与安全性之间的一种实用平衡。

## 8.4.6 应急机制：可快速吊销与隔离

发生凭据泄露或可疑访问时，优先执行：

1. 吊销受影响凭据或设备信任。
2. 收敛入口策略，必要时临时阻断管理通道。
3. 回放审计日志，确认影响范围并复验恢复。

应急动作要预先演练，避免事故时临时决策。

## 8.4.7 基线巡检命令

下面命令可用于快速巡检主机远程访问基线。

```bash
# 检查 SSH 认证方式
sshd -T | grep -E 'passwordauthentication|pubkeyauthentication'

# 检查是否存在非本地监听端口
lsof -nP -iTCP -sTCP:LISTEN | grep -v '127.0.0.1' || echo "No public listeners"
```

巡检建议固定在发布后和变更后执行，并与 `doctor/status` 输出一起归档。
