🚀 在 VS Code 中

使用遠端通道進行開發

Visual Studio Code 的 Remote - Tunnels 擴充功能可讓您透過安全通道連線到遠端機器,例如桌上型電腦或虛擬機器 (VM)。您可以從任何地方的 VS Code 用戶端連線到該機器,而無需 SSH 的要求。

通道技術透過 Microsoft 開發通道安全地傳輸從一個網路到另一個網路的資料。

由於此擴充功能直接在遠端機器上執行命令和其他擴充功能,因此可以消除 VS Code 用戶端機器上需要原始碼的需求。此擴充功能將在遠端作業系統上安裝 VS Code Server;伺服器獨立於遠端作業系統上任何現有的 VS Code 安裝。

Remote Tunnels architecture overview

VS Code 可以提供本機品質的開發體驗 - 包括完整的 IntelliSense (完成)、程式碼導覽和偵錯 - 無論您的程式碼託管在哪裡

開始使用

您有兩種使用通道的路徑

這兩種路徑都會產生相同的通道功能 - 您可以使用最適合您的工具。如果您無法在遠端機器上安裝完整的 VS Code Desktop,CLI 是一個絕佳的選擇。如果您已經在 VS Code 中進行一些工作,然後想要為您目前的機器啟用通道,則使用 VS Code Desktop UI 很方便。

我們將在以下章節中描述這兩種路徑。

使用 'code' CLI

您可以透過 code CLI 建立和使用通道。

  1. 在您想要從 VS Code 用戶端開發的遠端機器上安裝 code CLI。CLI 在 VS Code 用戶端和您的遠端機器之間建立通道。CLI 自動內建於 VS Code Desktop 中 - 無需額外設定。

    其他下載選項

    或者,您可以透過我們下載頁面上的 獨立安裝 取得 CLI,這與 VS Code Desktop 安裝是分開的

    VS Code download options with CLI highlighted

    您也可以透過遠端機器的終端機安裝和解壓縮 CLI。如果您的遠端機器沒有 UI,這可能特別有幫助

    curl -Lk 'https://vscode.dev.org.tw/sha/download?build=stable&os=cli-alpine-x64' --output vscode_cli.tar.gz
    
    tar -xf vscode_cli.tar.gz
    

    注意:如果您使用的是獨立或終端機安裝,則以下章節中的命令將以 ./code 而不是 code 開頭。

  2. 使用 tunnel 命令建立安全通道

    code tunnel
    

    此命令會在此機器上下載並啟動 VS Code Server,然後建立通往它的通道。

    注意:當您第一次在機器上啟動通道時,系統會提示您接受伺服器授權條款。您也可以在命令列上傳遞 --accept-server-license-terms 以避免提示。

  3. 此 CLI 將輸出一個與此遠端機器關聯的 vscode.dev URL,例如 https://vscode.dev/tunnel/<machine_name>/<folder_name>。您可以在您選擇的用戶端上開啟此 URL。

  4. 當您第一次在此用戶端上開啟 vscode.dev URL 時,系統會提示您登入您的 GitHub 帳戶,網址為 https://github.com/login/oauth/authorize...。這會驗證您對通道服務的身分,以確保您有權存取正確的遠端機器集。

使用 VS Code UI

  1. 在您想要開啟通道存取的遠端機器上開啟 VS Code。

  2. 在 VS Code 帳戶選單中,選取開啟遠端通道存取選項,如下圖所示。您也可以開啟 VS Code 中的命令面板 (F1) 並執行命令Remote Tunnels: Turn on Remote Tunnel Access...

    Turn on Remote Tunnel Access via the VS Code Account menu

  3. 系統會提示您登入 GitHub。登入後,通道將在您目前的機器上啟動,並且您可以遠端連線到此機器。

    Prompt that remote tunnel access is enabled

  4. 在您選擇的用戶端中,您可以從上方通知開啟 vscode.dev 連結並開始編碼!

注意:只有當 VS Code 在遠端機器上保持執行時,才能透過通道存取該機器。一旦您退出 VS Code,除非您再次在那裡啟動 VS Code 或執行 code tunnel CLI 命令,否則將無法再透過通道連線到它。

Remote Tunnels 擴充功能

您透過 code CLI 或 VS Code UI 開啟的 vscode.dev 執行個體都預先安裝了 Remote - Tunnels 擴充功能。

如果您已經在 VS Code (桌面或 Web) 中工作,並且想要連線到遠端通道,您可以直接安裝和使用 Remote - Tunnels 擴充功能。安裝擴充功能後,開啟命令面板 (F1) 並執行命令Remote Tunnels: Connect to Tunnel。您將能夠連線到任何具有作用中通道的遠端機器。

您也可以在遠端瀏覽器中檢視您的遠端機器,您可以透過命令Remote Explorer: Focus on Remote View將焦點放在上面

Remote Explorer view with Tunnels

與其他遠端開發擴充功能一樣,您的遠端機器名稱將列在左下角的綠色遠端指示器中。按一下此指示器是探索 Remote Tunnels 命令的另一種方式,以及關閉遠端連線或安裝 VS Code Desktop 的選項。

VS Code remote indicator connected to a remote tunnel

在容器中開啟 Remote Tunnels 主機上的資料夾

您可以將 Remote - Tunnels 和 開發容器 擴充功能一起使用,以在容器內開啟遠端主機上的資料夾。您甚至不需要在本機安裝 Docker 用戶端。

若要執行此操作

  1. 依照 安裝 步驟,在您的遠端主機和本機 VS Code 和開發容器擴充功能上安裝 Docker。
  2. 依照 Remote - Tunnels 擴充功能的 開始使用 指示設定通道、連線至通道並在那裡開啟資料夾。
  3. 使用命令面板中的 Dev Containers: Reopen in Container 命令 (F1⇧⌘P (Windows, Linux Ctrl+Shift+P))。

其餘的 開發容器快速入門 照常適用。您可以在 其文件中瞭解有關 開發容器擴充功能的更多資訊。如果此模型不符合您的需求,您也可以參閱 在遠端 Docker 主機上開發 文章以取得其他選項。

常見問題

Remote Tunnels、VS Code Server 和遠端開發之間的關係是什麼?

Visual Studio Code 遠端開發 可讓您使用容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 作為功能完整的開發環境。

遠端開發可讓您的本機 VS Code 安裝與其他機器 (無論是虛擬或實體) 上的原始碼和執行階段環境透明地互動,方法是將某些命令的執行移至「遠端伺服器」,即 VS Code Server。當您連線到遠端端點時,VS Code 會快速安裝 VS Code Server,並且可以託管直接與遠端工作區、機器和檔案系統互動的擴充功能。

我們已發布此 VS Code Server 後端元件作為您可以自行執行的服務 (您可以在 其文件中閱讀更多資訊),而不是僅由遠端開發擴充功能單獨安裝和管理。

存取 VS Code Server 涉及幾個元件

  • VS Code Server:使 VS Code 遠端體驗成為可能的後端伺服器。
  • Remote - Tunnels 擴充功能:促進連線至遠端機器的擴充功能,您在其中執行伺服器執行個體。

作為擴充功能作者,我需要做什麼?

VS Code 擴充功能 API 抽象化了本機/遠端詳細資訊,因此大多數擴充功能無需修改即可運作。但是,鑑於擴充功能可以使用它們想要的任何節點模組或執行階段,在某些情況下可能需要進行調整。我們建議您測試您的擴充功能,以確保不需要更新。請參閱 支援遠端開發 以取得詳細資訊。

多個使用者或用戶端可以同時存取相同的遠端執行個體嗎?

否,伺服器執行個體旨在一次由一位使用者或用戶端存取。

我該如何移除通道或機器?

如果您想停止透過 CLI 執行的通道,您可以使用 Ctrl + C 結束作用中的通道。如果您已透過 VS Code UI 啟用通道,您可以執行 VS Code 中的命令Remote Tunnels: Turn off Remote Tunnel Access...

您可以透過在該機器上執行 code tunnel unregister 來移除機器與通道的關聯。您也可以開啟任何 VS Code 用戶端,選取遠端瀏覽器視圖,在您要移除的機器上按一下滑鼠右鍵,然後選取取消註冊

通道如何受到保護?

託管和連線到通道都需要在每一端使用相同的 Github 或 Microsoft 帳戶進行驗證。在這兩種情況下,VS Code 都會對 Azure 中託管的服務建立輸出連線;通常不需要防火牆變更,而且 VS Code 不會設定任何網路接聽程式。

一旦您從遠端 VS Code 執行個體連線,就會透過通道建立 SSH 連線,以提供端對端加密。目前此加密的首選密碼是 CTR 模式中的 AES 256,而實作此功能的程式碼是 開放原始碼

您可以在其 文件中瞭解有關基礎開發通道服務安全性的更多資訊。

通道服務是否有使用限制?

為了避免濫用基礎通道服務,資源 (例如通道數量和頻寬) 存在使用限制。我們預計大多數使用者永遠不會達到這些限制。

例如,目前您可以為您的帳戶註冊 10 個通道。如果您想建立一個新的通道,並且已經註冊了其他 10 個通道,CLI 將選擇一個隨機未使用的通道並刪除它。請注意,此限制可能會變更。

我可以在我的組織中設定政策嗎?

如果您是想要控制連接埠轉送存取的組織成員,您可以透過允許或拒絕存取網域 global.rel.tunnels.api.visualstudio.com 來執行此操作。

對於執行 Windows 裝置的使用者,您也可以設定然後部署開發通道的群組原則設定。您可以在 開發通道文件中瞭解更多資訊。

我如何確保我的通道保持執行?

您有幾個選項

  • 使用 service 命令以服務形式執行。您可以執行 code tunnel service installcode tunnel service uninstall 來安裝和移除它們。
  • 使用 no-sleep 選項,code tunnel --no-sleep,以防止您的遠端機器進入睡眠狀態。

code CLI 文件中所述,您可以透過 code tunnel --help 探索所有可能的 CLI 命令和選項。

在通道連線期間,我可以使用其他遠端開發擴充功能或開發容器嗎?

是的!目前,您可以透過 Remote - Tunnels 連線到 WSL開發容器