遠端開發常見問題集
本文涵蓋各個 Visual Studio Code 遠端開發 (Remote Development) 擴充功能的常見問題。請參閱 SSH、Containers 與 WSL 文章,以取得有關設定和操作各自功能的更多詳細資料。或者,您可以嘗試入門教學課程,協助您在遠端環境中快速上手。
若有關於 GitHub Codespaces 的問題,請參閱 GitHub Codespaces 文件。
一般資訊
什麼是 Visual Studio Code 遠端開發?
Visual Studio Code 遠端開發擴充功能套件 (Remote Development extension pack) 可讓您在容器中、遠端機器上 (透過 SSH) 或 Windows Subsystem for Linux 中開啟任何資料夾,並充分利用 VS Code 的完整功能集。這表示無論您的程式碼位於何處或託管在何處,VS Code 都能提供具備本機品質的開發體驗 — 包括完整的 IntelliSense (程式碼自動完成)、偵錯等功能。
相較於本機編輯,VS Code 遠端開發提供哪些優勢?
遠端開發的一些好處包括:
- 能夠在與您本機執行不同的作業系統上進行編輯、建置或偵錯。
- 能夠在符合目標部署環境的環境中進行開發。
- 使用比您的本機更大或更專門的硬體來進行開發。
- 能夠編輯儲存在其他位置的程式碼,例如在雲端中或客戶端現場。
- 分隔開發人員環境以避免衝突、提高安全性並加速新人上手。
相較於使用網路共用或同步檔案,VS Code 遠端開發提供大幅提升的效能,並能更好地掌控您的開發環境與工具。
遠端開發擴充功能與 GitHub Codespaces 有何關聯?
GitHub Codespaces 是一項服務,提供可從 VS Code 和全新的瀏覽器型編輯器存取的受管理雲端託管開發環境。該服務也允許 VS Code 和瀏覽器型編輯器存取自我託管環境 (桌面或伺服器),而不需要 SSH 伺服器甚至直接的網路路由。您可以在 GitHub Codespaces 文件中閱讀更多資訊。
雖然「遠端開發」和 Codespaces 擴充功能共用技術與功能,但「遠端開發」擴充功能是獨立發布的,且可以獨立於 GitHub Codespaces 運作。
遠端開發擴充功能是如何運作的?
Visual Studio Code 遠端開發可讓您的本機 VS Code 安裝透過將某些命令的執行轉移至「遠端伺服器」,以透明的方式與其他機器 (無論是虛擬機或實體機) 上的原始程式碼與執行階段環境進行互動。當您連線至遠端端點時,VS Code 會快速安裝 VS Code 伺服器 (VS Code Server),並且可以託管直接與遠端工作區、機器及檔案系統互動的擴充功能。

請參閱支援遠端開發以取得關於擴充功能的其他詳細資料。
遠端開發擴充功能如何確保對遠端機器、VM 或容器的存取安全?
Visual Studio Code 遠端開發使用現有且廣為人知的傳輸協定 (例如 secure shell) 來進行驗證並確保流量安全。除了這些廣為人知且安全的傳輸協定所使用的連接埠之外,不需要公開開啟任何連接埠。
所注入的 VS Code Server 會以您用來登入該機器的相同使用者身分執行,確保 VS Code 及其擴充功能不會在未經授權的情況下獲得不當的提高權限存取。此伺服器由 VS Code 啟動和停止,且未與任何使用者或全域登入或啟動指令碼連結。VS Code 會管理伺服器的生命週期,因此您不需要擔心它是否正在執行。
VS Code Server 可以自行安裝或使用嗎?
不行。VS Code Server 是遠端開發擴充功能的元件,並由 VS Code 用戶端管理。當它連線至端點時,會由 VS Code 自動安裝與更新;如果分開安裝,可能會很快過期。它不打算也未獲授權供其他用戶端使用。
VS Code Server 的連線需求為何?
安裝 VS Code Server 要求您的本機必須具有對以下的對外 HTTPS (連接埠 443) 連線能力:
update.code.visualstudio.comvscode.download.prss.microsoft.com
根據預設,Remote - SSH 會嘗試在遠端主機上下載,若失敗則改為在本機下載 VS Code Server,並在建立連線後將其傳輸至遠端。您可以透過 remote.SSH.localServerDownload 設定來變更此行為,改為永遠在本機下載然後進行傳輸,或永遠不在本機下載。
Dev Containers 擴充功能一律會在本地下載並傳輸至容器中。
您可以使用 Extensions: Install from VSIX... 命令在沒有網際網路連線的情況下手動安裝擴充功能,但如果您使用擴充功能面板或 devcontainer.json 來安裝擴充功能,則您的本機和 VS Code Server 將需要對以下網址擁有對外 HTTPS (連接埠 443) 存取權:
marketplace.visualstudio.com*.gallerycdn.vsassets.io(Azure CDN)
最後,有些擴充功能(例如 C#)會從 download.microsoft.com 或 download.visualstudio.microsoft.com 下載次要相依性。其他擴充功能(如 Visual Studio Live Share)可能有額外的連線要求。如果您遇到困難,請查閱該擴充功能的文件以了解詳情。
伺服器與 VS Code 用戶端之間的所有其他通訊,會根據擴充功能透過下列傳輸管道來完成:
- SSH:已驗證的安全 SSH 通道。
- Containers:Docker 設定的通訊管道 (透過
docker exec)。 - WSL:隨機本機連接埠。
您可以在網路連線文章中找到 VS Code 本身需要存取的位置清單。
為什麼在使用 Remote 擴充功能時,我看不到 Container Tools 擴充功能中的本機容器?
根據預設,Container Tools 擴充功能會在遠端執行。雖然在某些情況下這是合理的預設值,但這表示當 VS Code 連線至遠端 SSH 主機、容器或 WSL 時,該擴充功能可能不會顯示本機容器。
您可以使用下列其中一種解決方案來解決此問題:
-
開啟新的本機視窗 (檔案 > 新增視窗),並使用它來處理本機容器。
-
在需要檢視本機容器的情況下,安裝 Dev Containers 擴充功能並使用遠端總管。
-
僅限 WSL:使用適用於 WSL 2 的 Docker 技術預覽版 (Docker Technical Preview for WSL 2) 或設定 Docker Desktop 以在 WSL 1 中使用。
-
僅限 Dev Containers:在容器中轉送 Docker 通訊端並安裝 Docker CLI (僅限 CLI)。
-
使用 extensionKind 屬性強制擴充功能成為
ui。不過,這會導致某些命令無法運作。
若要使用遠端開發,主機上需要安裝哪些 Linux 套件或程式庫?
遠端開發需要 kernel >= 4.18、glibc >= 2.28 以及 libstdc++ >= 3.4.25。近期以 x86_64 glibc 為基礎的發行版本具備最佳支援,但確切需求可能會因發行版本而異。
Dev Containers 與 WSL 擴充功能支援基於 musl 的 Alpine Linux,而 Remote - SSH 則支援 ARMv7l (AArch32) / ARMv8l (AArch64)。不過,某些擴充功能中的原生相依性可能會導致它們無法在非 x86_64 glibc 發行版本上運作。請注意,實驗性的 ARMv8l (AArch64) 僅在 VS Code Insiders 中提供。
請參閱透過 Linux 進行遠端開發以取得其他詳細資料。
我可以在較舊的 Linux 發行版本上執行 VS Code Server 嗎?
從 VS Code 1.99 版本 (2025 年 3 月) 開始,由 VS Code 發布的預先建置伺服器僅相容於基於 glibc 2.28 或更新版本的 Linux 發行版本。例如 Debian 10、RHEL 8 或 Ubuntu 20.04。
如果提供了具備這些必要程式庫版本的 sysroot,VS Code 仍允許使用者透過 Remote - SSH 擴充功能連線至 VS Code 不支援的作業系統 (不具備 glibc >= 2.28 和 libstdc++ >= 3.4.25 的作業系統)。這種方法可讓您和您的組織有更多時間遷移至較新的 Linux 發行版本。
| VS Code 版本 | 基本需求 | 備註 |
|---|---|---|
| >= 1.99.x | kernel >= 4.18, glibc >= 2.28, libstdc++ >= 3.4.25, binutils >= 2.29 | <none> |
這種方法是一種技術因應措施,並非官方支援的使用情境。
請依照下列步驟設定您的環境以使用此因應措施:
-
建置 sysroot
我們建議使用 Crosstool-ng 來建置 sysroot。以下是您可以開始使用的一些範例設定:
您也可以使用下列範例容器來取得安裝了 Crosstool-ng 的環境:
FROM ubuntu:latest RUN apt-get update RUN apt-get install -y gcc g++ gperf bison flex texinfo help2man make libncurses5-dev \ python3-dev autoconf automake libtool libtool-bin gawk wget bzip2 xz-utils unzip \ patch rsync meson ninja-build # Install crosstool-ng RUN wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.26.0.tar.bz2 RUN tar -xjf crosstool-ng-1.26.0.tar.bz2 RUN cd crosstool-ng-1.26.0 && ./configure --prefix=/crosstool-ng-1.26.0/out && make && make install ENV PATH=$PATH:/crosstool-ng-1.26.0/out/bin一旦您準備好具備 Crosstool-ng 和相關設定的環境,請執行下列命令來產生 sysroot:
mkdir toolchain-dir cd toolchain-dir cp <path-to-config-file> .config ct-ng build -
VS Code 伺服器在安裝過程中會使用 patchelf 來取用 sysroot 中的必要程式庫。
已知 patchelf v0.17.x 會導致遠端伺服器發生區段錯誤 (segfaults),我們建議使用 patchelf >=v0.18.x
-
在遠端主機上安裝 patchelf 二進位檔與 sysroot
-
建立下列 3 個環境變數:
您現在可以使用 Remote - SSH 擴充功能連線至遠端。連線成功後,VS Code 將會顯示有關不支援該連線的對話方塊與橫幅訊息。
我可以在 32 位元 ARM Linux 主機上執行 VS Code Server 嗎?
VS Code 1.122 版本是支援在 32 位元 ARM Linux 主機上執行預先建置伺服器的最後一個版本。從 VS Code 1.123 版本開始,您必須使用受支援的 x86_64 或 ARM64 Linux 主機來進行遠端開發。
我可以只安裝個別的擴充功能,而不是安裝整個擴充功能套件嗎?
可以。遠端開發擴充功能套件 (Remote Development extension pack) 提供了一個便捷的方式,讓您在最新遠端功能發布時進行存取。不過,您隨時可以從 Marketplace 或 VS Code 擴充功能檢視中安裝個別的擴充功能。
如何檢視與設定擴充功能?
如同 Visual Studio Code 的其他部分,您可以透過各自的設定來個人化每個遠端開發擴充功能。以 Dev Containers 為例,您可以透過在擴充功能檢視中開啟該擴充功能 (⇧⌘X (Windows、Linux Ctrl+Shift+X)) 並導覽至 Feature Contributions,來檢閱所有 Dev Containers 設定的清單。

WSL
相較於使用 WSL 作為終端機,此擴充功能有什麼優勢?
您可以將 WSL 視為在 Windows 上執行的 Linux 機器,您可以在其中安裝 Linux 專屬的框架/工具 (例如 Python、Go、Rust 等),而不會影響您的 Windows 設定。接著,您可以使用 VS Code 與 WSL 擴充功能,在安裝於 WSL 的內容中進行開發,與安裝在 Windows 上的內容隔離。
例如,您可能會在 WSL 中安裝 Go 堆疊 (編譯器、偵錯工具、程式碼檢查工具等)。如果您僅在 Windows 上執行 VS Code,您也必須在那裡安裝相同的 Go 堆疊,才能取得智慧自動完成、偵錯、「前往定義」導覽等功能。而且因為語言服務是在 Windows 上執行,所以它們不知道 WSL 裡有什麼。
沒錯,您可以從 Windows 在 WSL 中執行二進位檔,反之亦然,但一般的 VS Code 擴充功能不知道該怎麼做。這就是我們一開始支援在 WSL 中進行偵錯的方式,但我們很快就發現必須更新所有擴充功能以使其了解 WSL。
我們決定改為讓 VS Code 的部分元件在 WSL 中執行,並讓在 Windows 上執行的 UI 與在 WSL 中執行的 VS Code 伺服器進行通訊。這就是 WSL 擴充功能所啟用的功能,透過它,Go 擴充功能會與其餘的 Go 工具 (編譯器、偵錯工具、程式碼檢查工具) 一起在 WSL 中執行,而 VS Code 則在 Windows 上執行。
透過這種方法,像是智慧自動完成這類的語言功能可以直接針對 WSL 中的內容運作,而不需要在 Windows 上進行任何設定。您不必擔心路徑問題,也不需要在 Windows 上設定不同版本的開發堆疊。如果您是要將應用程式部署到 Linux,您可以將 WSL 執行個體設定得與您的執行階段環境類似,同時還能在 Windows 上獲得豐富的編輯體驗。
擴充功能作者
身為擴充功能開發者,我需要做什麼?
VS Code 擴充功能 API 抽象化了本機/遠端詳細資料,因此大多數擴充功能無需修改即可運作。不過,鑑於擴充功能可以使用其想要的任何 node 模組或執行階段,在某些情況下可能需要進行調整。我們建議您應測試您的擴充功能 (特別是在容器中),以確保不需要進行更新。請參閱支援遠端開發以取得詳細資料。
當使用者連線至遠端時,擴充功能可以存取本機資源或 API 嗎?
當 VS Code 連線至遠端環境時,擴充功能會被分類為 UI 或 Workspace 擴充功能。UI 擴充功能會在本機擴充功能主機中執行,可以貢獻 UI 或個人化功能 (例如佈景主題),並可存取本機檔案或 API. Workspace 擴充功能則會在與工作區相同的遠端擴充功能主機中執行,並擁有對原始程式碼、遠端檔案系統及遠端 API 的完整存取權。雖然 Workspace 擴充功能不專注於 UI 自訂,但它們也可以貢獻總管、檢視和其他 UI 元素。
當使用者安裝擴充功能時,VS Code 會嘗試根據其類型推斷正確的位置並進行安裝。不需要在遠端執行的擴充功能 (例如佈景主題和其他 UI 自訂項目) 會自動安裝在 UI 端。所有其他擴充功能都會被視為 Workspace 擴充功能,因為它們具備最完整的功能。不過,擴充功能作者也可以透過 package.json 中的 extensionKind 屬性來覆寫此位置。
如果您的擴充功能未如預期般運作,有相關步驟可供檢查它是否在正確的位置執行,或者是否應該採用不同的 extensionKind。另請參閱支援遠端開發,以取得關於擴充功能作者需要了解有關遠端開發與 Codespaces 的其他詳細資料。
授權與隱私權
位置
您可以在此處找到 VS Code 遠端開發擴充功能的授權:
為什麼遠端開發擴充功能或其元件不是開放原始碼?
Visual Studio Code 遠端開發擴充功能及其相關元件採用開放的規劃、問題與功能請求流程,但目前並非開放原始碼。這些擴充功能共用原始程式碼,該原始程式碼也用於完全受管理的遠端開發服務 (例如 GitHub Codespaces) 及其相關擴充功能中。
請參閱 Visual Studio Code 與 'Code - OSS' 的差異以及微軟擴充功能授權文章以取得更多資訊。
遠端開發擴充功能的連線目的地是否有任何限制?
您可以自由將這些擴充功能用於個人或企業用途,以連線至您自己的實體機、虛擬機或容器。這些可以是在地端 (on-premise)、您自己的私有雲或資料中心、Azure 或其他雲端/非雲端託管提供者中。您不得在這些擴充功能或其相關元件之上建置公開的產品或服務 (請參閱下一個問題)。
我可以使用 VS Code 遠端開發擴充功能來建置我自己的產品或服務嗎?
您可以將這些擴充功能用於您自己的內部或私有服務。您不得在 VS Code 遠端開發擴充功能或其相關元件 (例如 VS Code Server) 之上建置公開或商業服務。您不得建立其他擴充功能來擴充或操作遠端開發擴充功能。雖然授權條款規定您不得「將本軟體提供為獨立或整合式產品,或將其與您的任何應用程式結合供他人使用」,但您可以記錄如何將這些擴充功能與您的服務結合使用。
我可以在我自己的公開服務產品中重新封裝或重複使用 VS Code Server 嗎?
不行。授權條款規定您不得「將本軟體提供為獨立或整合式產品,或將其與您的任何應用程式結合供他人使用」,這意味著您不得在 VS Code Server 之上建置公開產品或服務。
我對於是否可以使用擴充功能來執行 X 有疑問,我可以詢問誰?
請提交 issue。
GDPR 與 VS Code 遠端開發
VS Code 遠端開發擴充功能遵循與 Visual Studio Code 本身相同的 GDPR 政策。請參閱一般常見問題集以取得詳細資料。
問題或意見回饋
有問題或意見反應嗎?
- 請參閱提示與技巧。
- 在 Stack Overflow 上搜尋。
- 提出功能需求或回報問題。