🚀 在 VS Code 中取得

遠端開發常見問題

本文涵蓋 Visual Studio Code 遠端開發 擴充功能常見問題。如需設定及使用各項功能的詳細資訊,請參閱 SSH容器WSL 文章。或試試入門 教學課程,協助您快速在遠端環境中執行。

如需有關 GitHub Codespaces 的問題,請參閱 GitHub Codespaces 文件

一般

什麼是 Visual Studio Code 遠端開發?

Visual Studio Code 遠端開發擴充功能套件 可讓您開啟容器、遠端機器 (透過 SSH) 或 Windows 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 伺服器,並且可以託管直接與遠端工作區、機器和檔案系統互動的擴充功能。

Architecture summary

如需有關擴充功能的其他詳細資訊,請參閱 支援遠端開發

遠端開發擴充功能如何保護對遠端機器、VM 或容器的存取?

Visual Studio Code 遠端開發使用現有的知名傳輸方式,例如 安全殼層 來驗證和保護流量安全。除了這些知名的安全傳輸方式使用的連接埠之外,不需要公開開啟任何連接埠。

注入的 VS Code 伺服器會以您用來登入機器的相同使用者身分執行,確保 VS Code 及其擴充功能不會在未經許可的情況下獲得不當的提升存取權。伺服器由 VS Code 啟動和停止,並且未連線到任何使用者或全域登入或啟動腳本。VS Code 管理伺服器的生命週期,因此您不必擔心伺服器是否正在執行。

VS Code 伺服器可以自行安裝或使用嗎?

否。VS Code 伺服器是遠端開發擴充功能的元件,由 VS Code 用戶端管理。當 VS Code 連線到端點時,它會自動安裝和更新,如果單獨安裝,可能會很快過時。它並非旨在或 授權 由其他用戶端使用。

VS Code 伺服器的連線需求為何?

安裝 VS Code 伺服器需要您的本機機器具有對外的 HTTPS (連接埠 443) 連線能力,才能連線到

  • update.code.visualstudio.com
  • *.vo.msecnd.net (Azure CDN)

預設情況下,Remote - SSH 會嘗試在遠端主機上下載,並在連線建立後,回復為在本機下載 VS Code 伺服器並遠端傳輸。您可以使用 remote.SSH.localServerDownload 設定來變更此行為,以一律在本機下載然後傳輸,或永不在本機下載。

Dev Containers 擴充功能一律在本機下載並傳輸到容器中。

您可以使用 擴充功能:從 VSIX 安裝... 命令,在沒有網際網路連線的情況下手動安裝擴充功能,但如果您使用擴充功能面板或 devcontainer.json 安裝擴充功能,您的本機機器和 VS Code 伺服器將需要對外的 HTTPS (連接埠 443) 存取權,才能連線到

  • marketplace.visualstudio.com
  • vscode.blob.core.windows.net
  • *.vo.msecnd.net (Azure CDN)
  • *.gallerycdn.vsassets.io (Azure CDN)

最後,某些擴充功能 (例如 C#) 會從 download.microsoft.comdownload.visualstudio.microsoft.com 下載次要相依性。其他擴充功能 (例如 Visual Studio Live Share) 可能有其他連線需求。如果您遇到問題,請參閱擴充功能的文件以取得詳細資訊。

伺服器與 VS Code 用戶端之間的所有其他通訊都是透過下列傳輸通道完成,具體取決於擴充功能

  • SSH:已驗證的安全 SSH 通道。
  • 容器:Docker 的已設定通訊通道 (透過 docker exec)。
  • WSL:隨機本機連接埠。

您可以在 網路連線文章中找到 VS Code 本身需要存取的位置清單。

為什麼在使用 Remote - 擴充功能時,我在 Docker 擴充功能中看不到本機容器?

預設情況下,Docker 擴充功能將遠端執行。雖然在某些情況下這是合理的預設值,但這表示當 VS Code 連線到遠端 SSH 主機、容器或 WSL 時,擴充功能可能不會顯示本機容器。

您可以使用下列其中一種解決方案來解決此問題:

主機上需要安裝哪些 Linux 套件或程式庫才能使用遠端開發?

遠端開發需要核心 >= 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 伺服器嗎?

從 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 核心 >= 4.18、glibc >= 2.28、libstdc++ >= 3.4.25、binutils >= 2.29 <無>
重要事項

此方法是技術上的變通方法,並非正式支援的使用案例。

請依照下列步驟設定您的環境以進行此變通方法

  1. 建置 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
    
  2. VS Code 伺服器在安裝過程中會使用 patchelf,以從 sysroot 取用必要的程式庫。

重要事項

已知 patchelf v0.17.x 會導致遠端伺服器發生區段錯誤,我們建議使用 patchelf >=v0.18.x

  1. 在遠端主機上安裝 patchelf 二進位檔和 sysroot

  2. 建立下列 3 個環境變數

    • VSCODE_SERVER_CUSTOM_GLIBC_LINKER sysroot 中動態連結器的路徑 (用於 patchelf--set-interpreter 選項)
    • VSCODE_SERVER_CUSTOM_GLIBC_PATH sysroot 中程式庫位置的路徑 (用作 patchelf--set-rpath 選項)
    • VSCODE_SERVER_PATCHELF_PATH 遠端主機上 patchelf 二進位檔的路徑

您現在可以使用 Remote - SSH 擴充功能連線到遠端。成功連線後,VS Code 將顯示對話方塊和橫幅訊息,指出連線不受支援。

我可以安裝個別擴充功能而不是擴充功能套件嗎?

可以。遠端開發擴充功能套件 提供一種方便的方式,讓您在發行時存取所有最新的遠端功能。但是,您可以隨時從市集或 VS Code 擴充功能檢視安裝個別擴充功能。

如何檢閱及設定擴充功能設定?

Visual Studio Code 的其他部分 一樣,您可以透過設定自訂每個遠端開發擴充功能。以 Dev Containers 為例,您可以開啟擴充功能檢視中的擴充功能 (⇧⌘X (Windows、Linux Ctrl+Shift+X)),並瀏覽至 功能貢獻,以檢閱所有 Dev Containers 設定的清單。

List of settings in Feature Contributions

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 抽象化本機/遠端詳細資訊,因此大多數擴充功能都可以在不修改的情況下運作。但是,由於擴充功能可以使用它們想要的任何節點模組或執行階段,因此在某些情況下可能需要進行調整。我們建議您應測試您的擴充功能 (尤其是在容器中),以確保不需要更新。如需詳細資訊,請參閱 支援遠端開發

當使用者遠端連線時,擴充功能可以存取本機資源或 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 伺服器) 之上建置公用或商業服務。您不能建立其他擴充或操作遠端開發擴充功能的擴充功能。雖然授權聲明您不得「將軟體作為獨立或整合的產品提供,或將其與您的任何應用程式結合供他人使用」,但您可以記錄如何將擴充功能與您的服務結合使用。

我可以在我自己的公用服務產品中重新封裝或重複使用 VS Code 伺服器嗎?

否。授權聲明您不得「將軟體作為獨立或整合的產品提供,或將其與您的任何應用程式結合供他人使用」,這表示您不得在 VS Code 伺服器之上建置公用產品或服務。

我有關於我是否可以使用擴充功能來執行 X 的問題,我可以問誰?

請提交 問題

GDPR 和 VS Code 遠端開發

VS Code 遠端開發擴充功能遵循與 Visual Studio Code 本身相同的 GDPR 政策。如需更多詳細資訊,請參閱 一般常見問題

問題或意見反應

有問題或意見反應嗎?