遠端開發 FAQ
本文涵蓋了每個 Visual Studio Code 遠端開發擴充套件的常見問題解答。有關設定和使用各自功能的更多詳細資訊,請參閱 SSH、容器和 WSL 文章。或者嘗試入門 教程,幫助您快速在遠端環境中執行。
有關 GitHub Codespaces 的問題,請參閱 GitHub Codespaces 文件。
通用
什麼是 Visual Studio Code 遠端開發?
Visual Studio Code 遠端開發擴充套件包允許您在容器、遠端計算機(透過 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 Server 在您連線到遠端端點時由 VS Code 快速安裝,並可以託管直接與遠端工作區、機器和檔案系統互動的擴充套件。

有關擴充套件的更多詳細資訊,請參閱 支援遠端開發。
遠端開發擴充套件如何確保對遠端計算機、VM 或容器的訪問安全?
Visual Studio Code 遠端開發使用現有、眾所周知的傳輸協議,如 安全 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 擴充套件始終在本地下載並傳輸到容器中。
您可以使用“擴充套件:從 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 隧道。
- 容器:Docker 的配置通訊通道(透過
docker exec)。 - WSL:隨機本地埠。
您可以在 網路連線文章中找到 VS Code 本身需要訪問的位置列表。
為什麼在使用 Remote - 擴充套件時,在 Container Tools 擴充套件中看不到我的本地容器?
預設情況下,Container Tools 擴充套件將在遠端執行。雖然在某些情況下這是一個合理的預設設定,但這意味著當 VS Code 連線到遠端 SSH 主機、容器或 WSL 時,該擴充套件可能不會顯示本地容器。
您可以使用以下解決方案之一來解決此問題
-
開啟一個新本地視窗(檔案 > 新建視窗),並使用它來處理本地容器。
-
安裝 Dev Containers 擴充套件,並在需要檢視本地容器的情況下使用 遠端資源管理器。
-
僅限 WSL:使用 適用於 WSL 2 的 Docker 技術預覽版或 配置 Docker Desktop 以在 WSL 1 中使用。
-
僅限 Dev Containers:轉發 Docker 套接字並將 Docker CLI(僅)安裝到容器中。
-
使用 extensionKind 屬性將擴充套件強制為
ui。但是,這會阻止某些命令正常工作。
在主機上使用遠端開發需要安裝哪些 Linux 程式包或庫?
遠端開發需要核心 >= 4.18,glibc >=2.28,libstdc++ >= 3.4.25。最近的 x86_64 glibc-based 發行版支援最好,但具體要求可能因發行版而異。
Dev Containers 和 WSL 擴充套件支援 musl-based 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。
VS Code 仍允許使用者透過 Remote - SSH 擴充套件連線到不受 VS Code 支援的作業系統(不具有 glibc >= 2.28 和 libstdc++ >= 3.4.25 的作業系統),前提是提供了具有這些必需庫版本的 sysroot。這種方法讓您和您的組織有更多時間遷移到新的 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 會導致遠端伺服器發生段錯誤,我們建議使用 patchelf >=v0.18.x
-
在遠端主機上安裝 patchelf 二進位制檔案和 sysroot
-
建立以下 3 個環境變數
您現在可以透過 Remote - SSH 擴充套件連線到遠端。成功連線後,VS Code 會顯示一個對話方塊和橫幅訊息,告知連線不受支援。
可以安裝單個擴充套件而不是擴充套件包嗎?
是的。遠端開發擴充套件包為您提供了一種便捷的方式來訪問所有最新的遠端功能,因為它們已釋出。但是,您可以隨時從 Marketplace 或 VS Code 擴充套件檢視安裝單獨的擴充套件。
如何檢視和配置擴充套件設定?
與 Visual Studio Code 的其他部分一樣,您可以透過其設定來自定義每個遠端開發擴充套件。以 Dev Containers 為例,您可以透過開啟擴充套件在擴充套件檢視中檢視所有 Dev Containers 設定(⇧⌘X(Windows、Linux Ctrl+Shift+X)),然後導航到功能貢獻。

WSL
該擴充套件與使用 WSL 作為終端相比有什麼優勢?
您可以將 WSL 視為在 Windows 上執行的 Linux 機器,您可以在其中安裝 Linux 特定框架/工具(例如 Python、Go、Rust 等),而不會影響您的 Windows 設定。然後,您可以使用 VS Code 和 WSL 擴充套件來開發已安裝在 WSL 中的內容,與 Windows 上安裝的內容隔離。
例如,您可能在 WSL 中安裝了 Go 堆疊(編譯器、偵錯程式、linter 等)。如果僅在 Windows 上執行 VS Code,則還必須在此處安裝相同的 Go 堆疊才能獲得智慧補全、除錯、轉到定義導航等功能。而且由於語言服務在 Windows 上執行,它們不知道 WSL 中有什麼。
確實,您可以在 Windows 中執行 WSL 二進位制檔案,反之亦然,但常規的 VS Code 擴充套件不知道如何執行此操作。這就是我們最初開始支援在 WSL 中除錯的方式,但很快意識到我們必須更新所有擴展才能瞭解 WSL。
我們決定讓 VS Code 的部分元件在 WSL 中執行,並讓在 Windows 上執行的 UI 與在 WSL 中執行的 VS Code 伺服器通訊。這就是 WSL 擴充套件所實現的,有了它,Go 擴充套件與 Go 工具(編譯器、偵錯程式、linter)的其他部分一起在 WSL 中執行,而 VS Code 在 Windows 上執行。
透過這種方法,像智慧補全這樣的語言功能可以與 WSL 中的內容無縫配合,而無需在 Windows 上進行任何設定。您不必擔心路徑問題或在 Windows 上設定不同版本的開發堆疊。如果您正在將應用程式部署到 Linux,您可以將 WSL 例項設定為看起來像您的執行時環境,同時仍然在 Windows 上獲得豐富的編輯體驗。
擴充套件作者
作為擴充套件作者,我需要做什麼?
VS Code 擴充套件 API 抽象了本地/遠端詳細資訊,因此大多數擴充套件都可以正常工作而無需修改。但是,鑑於擴充套件可以使用任何它們想要的節點模組或執行時,在某些情況下可能需要進行調整。我們建議您測試您的擴充套件(尤其是在容器中),以確保不需要進行任何更新。有關詳細資訊,請參閱 支援遠端開發。
當用戶遠端連線時,擴充套件是否可以訪問本地資源或 API?
當 VS Code 連線到遠端環境時,擴充套件被歸類為UI 或工作區擴充套件。UI 擴充套件在本地擴充套件主機中執行,可以貢獻 UI 或個性化功能(例如主題),並可以訪問本地檔案或 API。工作區擴充套件在遠端擴充套件主機中與工作區一起執行,並可以完全訪問原始碼、遠端檔案系統和遠端 API。雖然工作區擴充套件不側重於 UI 自定義,但它們也可以貢獻資源管理器、檢視和其他 UI 元素。
當用戶安裝擴充套件時,VS Code 會嘗試根據其型別推斷正確的安裝位置。像主題和其他 UI 自定義這樣的擴充套件不需要遠端執行,因此會自動安裝在 UI 端。所有其他擴充套件都被視為工作區擴充套件,因為它們功能最全面。但是,擴充套件作者也可以在 package.json 中使用 extensionKind 屬性覆蓋此位置。
如果您的擴充套件未能按預期工作,有步驟可以檢查它是否在正確的位置執行,或者是否應該具有不同的 extensionKind。另請參閱 支援遠端開發,瞭解擴充套件作者需要了解的有關遠端開發和 Codespaces 的其他詳細資訊。
許可證和隱私
位置
您可以在此處找到 VS Code 遠端開發擴充套件的許可證
為什麼遠端開發擴充套件或其元件不是開源的?
Visual Studio Code 遠端開發擴充套件及其相關元件使用開放的規劃、問題和功能請求流程,但目前不是開源的。這些擴充套件共享原始碼,這些原始碼也用於完全託管的遠端開發服務,例如 GitHub Codespaces 及其相關擴充套件。
有關更多資訊,請參閱 Visual Studio Code 和 'Code - OSS' 的區別以及 Microsoft 擴充套件許可證文章。
遠端開發擴充套件的連線是否有任何限制?
您可以自由地將這些擴充套件用於個人或公司用途,以連線到您自己的物理機、虛擬機器或容器。這些可以在本地、您自己的私有云或資料中心、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 政策。有關更多詳細資訊,請參閱 通用 FAQ。
問題或反饋
有問題或反饋?
- 請參閱 技巧和竅門。
- 在 Stack Overflow 上搜索。
- 新增功能請求或報告問題。