SSD Nodes Learn
指南 Matt Connor作者: Matt Connor · 已更新 2026-07-24

如何在 VPS 上安全執行 OpenClaw?強化部署指南

OpenClaw 具備執行 shell 指令與瀏覽網頁的能力,若配置不當恐導致系統失控。本文提供 VPS 安全強化方案,包含建立非特權使用者、設定 firewall、管理 secrets 以及使用 systemd 進行嚴格限制,避免發生如 CVE-2026-32922 等權限提升漏洞風險。

什麼是 OpenClaw,以及為何必須先進行強化

OpenClaw 是一個自架式 AI agent。你在自己的伺服器上執行它,並將其連接至大型語言模型,它便能執行 shell 指令、控制瀏覽器、讀寫檔案,並根據你在聊天軟體傳送的訊息採取行動。這種權限範圍正是此工具的核心功能,同時也是主要的風險所在。一個可以執行任何指令的 agent,其安全性完全取決於執行它的主機環境,以及你為其設定的限制。

以下兩個事實決定了本指南的基調。首先,OpenClaw 的設計初衷是交由使用者進行強化。其安全模型將嚴格的工具策略、沙盒化與謹慎的權限管理責任歸於操作者,而非依賴預設的安全設定。其次,該專案已有過嚴重的安全事件:在 2026 年 3 月,四天內便披露了九個安全漏洞,其中包括一個評分為 9.9/10 的嚴重權限提升漏洞 CVE-2026-32922。這兩個事實並不代表你應該避開 OpenClaw,而是代表你不應以偷懶的方式執行它,而本指南提供的是謹慎的執行方式。

也有好消息。OpenClaw 已為你做了一個安全的選擇:其 gateway(控制一切的單一進程)預設監聽 loopback 位址,因此除非你刻意將其暴露於外,否則從網際網路無法存取。下述大部分工作是為了維持此狀態,並在發生問題時限制損害範圍。

為 OpenClaw 建立專屬的非特權使用者

絕不要以 root 身分執行 agent。如果 OpenClaw 以 root 執行且發生任何問題(無論是程式錯誤、錯誤指令,或是上述的 CVE 漏洞),損害將無法控制。請建立一個沒有 login shell 且沒有 sudo 權限的專用系統使用者,並以該使用者身分執行 agent:

sudo useradd --system --home /opt/openclaw --shell /usr/sbin/nologin openclaw

所有 OpenClaw 擁有的內容都位於 /opt/openclaw 之下,並由該帳戶擁有。這是最重要的一個步驟,其原理與 以非特權使用者執行服務 所述相同:agent 執行的帳戶身分,決定了它能破壞系統的上限。

安裝 OpenClaw

OpenClaw 是以 npm package 的形式發行,因此若伺服器尚未安裝 Node.js,請先安裝。請進行全域安裝,這會將 openclaw 二進位檔加入每個使用者的 PATH 中,接著執行一次性的初始化步驟:

sudo npm install -g openclaw@latest
sudo -u openclaw openclaw onboard

openclaw 使用者身分執行初始化,意味著 agent 的設定檔會存放於其家目錄 /opt/openclaw,而非 root 的目錄。該專案也提供 curl -fsSL https://openclaw.ai/install.sh | bash 安裝程式,可以用單行指令完成相同的安裝。在初始化過程中請跳過 --install-daemon 旗標:該旗標會註冊 OpenClaw 自身的服務,而你稍後建立的強化版 systemd unit 會更加嚴格。

將 gateway 保持在 loopback 並置於防火牆後方

gateway 預設綁定至 127.0.0.1。請保持現狀。幾乎沒有理由將該連接埠公開至網際網路,否則任何發現該連接埠的人,都能藉此遠端控制一個以執行指令為核心的進程。

在主機前部署一個預設拒絕(default-deny)的防火牆,以避免意外暴露任何服務:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable

這裡有兩個需要避免的陷阱。僅涵蓋 IPv4 的防火牆可能會讓相同的服務在 IPv6 上完全暴露,這正是導致許多人中招的 IPv6 防火牆漏洞。此外,如果你需要從筆電連接 gateway,請不要直接開啟連接埠。請透過 VPN 或 SSH tunnel 連線,確保 agent 永遠不會監聽公開的網際網路。

隔離其機密資訊

OpenClaw 需要 API key 才能連接你所使用的語言模型。該金鑰可能耗費你的金錢,並透過 agent 代表你執行動作,因此請將其視同密碼處理。不要將其放在 unit file 或任何儲存庫(repository)中。請將其存放在僅限 OpenClaw 使用者讀取的檔案中:

sudo install -o openclaw -g openclaw -m 600 /dev/null /opt/openclaw/openclaw.env
sudoedit /opt/openclaw/openclaw.env      # add ANTHROPIC_API_KEY=... or your model provider's key

systemd unit 會使用 EnvironmentFile 載入該檔案,因此金鑰會直接傳遞給進程,而不會出現在指令列、日誌或你的 shell history 中。

以強化的 systemd 服務執行

在 systemd 下執行 agent 可以獲得自動重啟功能、透過 journalctl 取得乾淨的日誌,最重要的是,它提供了一套核心層級的沙盒化選項,即使進程遭到入侵,也能縮減其可觸及的範圍。對 agent 最重要的選項包括:NoNewPrivileges 以防止其獲取新權限、ProtectSystem=strict 使檔案系統除了允許寫入的目錄外皆為唯讀、PrivateTmp 提供獨立的暫存目錄,以及 ProtectHome 防止其讀取使用者的家目錄。

在此產生一個完整的強化版 unit,然後將其複製到 /etc/systemd/system/openclaw.service

ToolGenerate a hardened systemd unit for the agent

該 unit 會啟動 openclaw gateway(控制 agent 的長期執行進程);若 which openclaw 在你的伺服器上顯示不同的路徑,請調整 ExecStart 以符合實際情況。關於這些指令以及 daemon-reloadenable --now 的完整說明,請參閱 running a program as a systemd service。貼上 unit 檔後的簡短指令:

sudo systemctl daemon-reload
sudo systemctl enable --now openclaw

同時強化前端入口

agent 主機的安全性取決於其所在的伺服器環境。再增加兩個層級即可完成強化。請參考 SSH hardening on a VPS,將 SSH 改為僅限金鑰驗證並停用 root 登入,以確保你管理主機的帳戶不會被暴力破解。接著加入 Fail2ban 來封鎖不斷掃描公開連接埠的攻擊者。這兩者都不會直接觸及 OpenClaw,但兩者都能切斷攻擊者用來接觸 OpenClaw 的路徑。

主動保持更新

2026 年 3 月的漏洞披露,是要求使用者保持更新的最有力論點。agent 中的權限提升漏洞比一般 Web App 嚴重得多,因為 agent 本身就具備執行指令的能力。請密切關注專案的發佈版本,快速套用安全更新,並將 OpenClaw 的升級視為常規維護,而非可延後的事項。

若要深入了解你實際在強化什麼,請參閱 the architecture of an OpenClaw-style agent 了解其運作組成,並參考 building your own AI agent on a VPS 了解任何 agent 的基本架構。

FAQ

在公開的 VPS 上執行 OpenClaw 安全嗎?

如果你進行了強化,就是安全的。OpenClaw 的設計本身功能強大:它會執行 shell 指令並控制瀏覽器,因此不當的設定確實非常危險,且該專案已有過嚴重的 CVE(2026 年 3 月的 CVE-2026-32922)。其安全模型要求操作者自行增加限制。請以非特權使用者執行、將 gateway 保持在 loopback 並置於預設拒絕的防火牆後方、隔離 API key,並以強化的 systemd 服務執行。

我應該將 OpenClaw gateway 暴露於網際網路嗎?

不應該。gateway 預設綁定至 loopback,你應該保持現狀。它是控制 agent 的單一進程,因此暴露的 gateway 會成為遠端進入「執行指令進程」的路徑。如果你需要遠端存取,請使用 VPN 或 SSH tunnel,而非開啟連接埠。

OpenClaw 應該以哪個使用者身分執行?

一個沒有 login shell 且沒有 sudo 權限的專用系統使用者,絕不要使用 root。如果 agent 被入侵,該使用者的權限將決定損害的上限,因此該帳戶應僅擁有其自身位於 /opt/openclaw 等目錄下的檔案,除此之外不應擁有其他權限。

我該如何保護 OpenClaw 的 API keys?

將其儲存在僅限 OpenClaw 使用者讀取的檔案中(權限模式 600),並使用 systemd 的 EnvironmentFile 將其載入服務。不要將金鑰放在 unit file、shell history 或任何 git repository 中。若懷疑金鑰外洩,請立即輪換金鑰。