觀點 · 資訊分享

Cloudflare Containers 的 SSH 改成預設開啟:不開公開連接埠,沒放公開金鑰也連不進去

Cloudflare 在 5 月 12 日宣布,Containers 透過 Wrangler 的 SSH 連線功能改為預設啟用,不必再手動設定。連線只能走 wrangler containers ssh,且要先在設定裡加入公開金鑰才連得上。

發布
2026-05-13
篇幅
約 3 分鐘 · 1,371 字
結構
8 節 + 3 題常見問題
標籤
#Cloudflare#Containers#Wrangler#SSH#除錯
Cloudflare Containers 的 SSH 改成預設開啟:不開公開連接埠,沒放公開金鑰也連不進去

一句話看懂:Cloudflare 讓 Containers 的 SSH 連線功能預設就開著,但它不會開出公開入口,沒有事先放好公開金鑰的人還是進不去。

Containers 預設開 SSH資訊圖卡:SSH 預設開啟,但沒放公開金鑰就連不進去

先用白話講:SSH 和 Containers 是什麼?

Containers 可以想成 Cloudflare 幫你保管的「貨櫃」:你把程式打包進去,它負責在全球各地執行。程式出問題時,工程師常常需要「打開貨櫃進去看一眼」,這個動作靠的就是 SSH,一種遠端安全登入電腦的方式。

以前這扇門預設是鎖死的,你得先自己改設定才能開。現在 Cloudflare 把門裝好、預設就開著,但門上還有鎖:你要事先放進自己的「鑰匙」(公開金鑰)才開得了。

發生什麼事

Cloudflare 在 5 月 12 日的更新日誌中宣布:

  • Containers 透過 Wrangler 的 SSH 功能預設啟用
  • 以前必須先把 ssh.enabled 設成 true 才能連線,現在不用了
  • 這個改變不會開出任何公開可連的連接埠
  • SSH 服務只能透過 wrangler containers ssh 這個指令連線,而且會用你的 Cloudflare 帳號驗證
  • 還必須事先把 ssh-ed25519 公開金鑰放進 authorized_keys,光是啟用 SSH 並不會讓任何人連進去

跟以前差在哪

以前 現在
SSH 是否預設啟用 否,要手動開 是
對外開放的連接埠 無 仍然無
連線所需條件 設定開啟 + 公開金鑰 + 帳號驗證 公開金鑰 + 帳號驗證

什麼時候該開、什麼時候該關

  • 開發與測試階段:需要進容器看日誌、檢查檔案、重現問題時,預設開啟會省下不少設定時間
  • 正式環境:沒有除錯需求就關掉,少一個入口就少一份要管理的風險
  • 多人團隊:每個人用自己的金鑰,人員異動時記得從設定裡移除對應的那一把

給開發者的技術細節

要連線,先在容器設定加上公開金鑰(以 JSON 設定檔為例):

{
  "containers": [
    {
      "authorized_keys": [
        { "name": "my-laptop", "public_key": "ssh-ed25519 AAAA..." }
      ]
    }
  ]
}

部署後執行 wrangler containers ssh <INSTANCE_ID> 連線。如果不想啟用,把設定改成:

{ "containers": [ { "ssh": { "enabled": false } } ] }

設定也可以用 TOML 格式寫,結構相同。

我的看法

對我這種習慣在自己的 NAS 上用 SSH 看容器的人來說,這個改動很自然:除錯時能進去看日誌與檔案,效率差很多。

但「預設開啟」還是值得多看一眼。官方的設計是雙重門檻,確實降低了風險,不過做正式環境專案時,我還是會把「誰的公開金鑰被放進設定檔」當成要審查的項目,離職或換人時一併清掉。不需要 SSH 的服務,就直接關掉最乾淨。

名詞小辭典

  • Container(容器):把程式與它需要的環境一起打包,到哪都能用同樣方式執行。
  • SSH:加密的遠端登入方式,可以在遠端電腦下指令。
  • 公開金鑰:像一把只有你持有私鑰才能開的鎖,鎖放在伺服器上,鑰匙留在你自己手上。
  • Wrangler:Cloudflare 官方的命令列工具,用來部署與管理 Workers、Containers 等服務。

資料來源

常見問題

SSH 預設開啟安全嗎?
官方說明不會因此開出公開連接埠:SSH 服務只能透過 wrangler containers ssh 連線,並以你的 Cloudflare 帳號驗證,而且還要先在設定裡放進公開金鑰,所以光是啟用不等於任何人都能進。
要怎麼連進容器?
在容器設定的 authorized_keys 加入名稱與 ssh-ed25519 公開金鑰,部署後執行 wrangler containers ssh 加上實例 ID 即可。
我不想開 SSH 怎麼辦?
把容器設定中的 ssh.enabled 設為 false 就會關閉。
LINE