本页内容
本页内容
网关
SSH 后端
该后端将远程实用程序合同、身份验证材料和远程工作空间播种一次,然后用作事实来源。
SSH 后端
使用 backend: "ssh" 在任意 SSH- 可访问的计算机上沙箱 exec、文件工具和媒体读取。
远程环境必须为文件系统桥提供 /bin/sh、python3 和 GNU- 兼容的 stat (-c) 和 readlink (-f、-n)。这些实用程序必须可供非交互式 SSH 命令使用,而不仅仅是交互式登录 shell。网关主机不需要这些远程实用程序:macOS 或 Windows 网关可以使用提供它们的 SSH 目标。这是远程实用程序合同,而不是 Linux-only 网关要求。
解析的工作空间和父目录路径在远程读写期间保留其空白,包括嵌入的和尾随的换行符。删除和重命名操作遵循挂载父目录别名,同时作用于最终条目本身。删除最后一个符号链接会使其目标完好无损;解析超出允许安装范围的父母将被拒绝。
新的远程工作空间在发布之前会上传到私有暂存目录中。支持时,fs-safe 会使用原子无替换目录重命名进行发布:Linux 上的 renameat2 或 macOS 上的 renameatx_np。
在拒绝 RENAME_NOREPLACE 的 Linux 文件系统(包括 gVisor 卷挂载)上,fs 安全检查目标是否不存在并回退到目录重命名。这永远不会将空声明公开为已完成的工作区。检查时出现的目标将被保留,并且文件或非空目录竞争对手无法被替换。可以替换检查后创建的空目录。 macOS 仍然需要其本机无替换原语。继续采用现有的远程工作空间,无需重新播种。
默认值:command: "ssh"、workspaceRoot: "/tmp/openclaw-sandboxes"、strictHostKeyChecking: true、updateHostKeys: true。
- 生命周期:OpenClaw 会在
sandbox.ssh.workspaceRoot下为每个作用域创建一个远程根目录。首次使用(创建或重新创建后)时,它会从本地工作区向该远程工作区初始化一次内容。之后,exec、read、write、edit、apply_patch、提示中的媒体读取以及入站媒体暂存都会直接通过 SSH 针对远程工作区运行。OpenClaw 不会自动将远程变更同步回本地工作区。 - 认证材料:
identityFile/certificateFile/knownHostsFile引用的是现有的本地文件。identityData/certificateData/knownHostsData接受内联字符串或 SecretRefs,通过正常的 secrets 运行时快照解析,写入权限为0600的临时文件,并在 SSH 会话结束时删除。如果同一项同时设置了*File和*Data变体,则该会话中以*Data为准。 - 远程工作区后果:远程SSH工作区在初始种子后成为真正的沙箱状态。在重新创建沙箱之前,种子步骤后在 OpenClaw 外部进行的主机本地编辑无法远程可见。
openclaw sandbox recreate下次使用时再次从本地删除每个范围的远程根和种子。此后端不支持浏览器沙箱,并且sandbox.docker.*设置不适用于它。 - 回复附件:附加到回复的工作区相关文件通过SSH文件系统桥读取,包括WebChat和通道回复。读取保留在沙箱工作区中,并保留配置的介质大小限制和支持的文件类型。不使用过时的本地工作区副本来代替远程文件。