使用遠端隧道進行開發
Visual Studio Code 的Remote - Tunnels(遠端 - 隧道)擴充套件允許您透過安全隧道連線到遠端計算機,例如桌面 PC 或虛擬機器 (VM)。您可以在任何地方透過 VS Code 客戶端連線到該計算機,而無需 SSH。
隧道透過Microsoft 開發隧道安全地將資料從一個網路傳輸到另一個網路。
由於該擴充套件直接在遠端計算機上執行命令和其他擴充套件,因此這可以消除在 VS Code 客戶端計算機上存放原始碼的需要。該擴充套件將在遠端作業系統上安裝 VS Code Server;該伺服器獨立於遠端作業系統上任何現有的 VS Code 安裝。
無論您的程式碼託管在哪裡,VS Code 都可以提供本地質量的開發體驗——包括完整的 IntelliSense(程式碼補全)、程式碼導航和除錯。
開始使用
您有兩種方式使用隧道
- 執行
code
命令列介面 (CLI) 的tunnel
命令。 - 透過 VS Code 桌面 UI 啟用隧道。
這兩種方式都會產生相同的隧道功能——您可以使用最適合您的工具。如果您的遠端計算機上無法安裝完整的 VS Code 桌面版,CLI 是一個不錯的選擇。如果您已經在 VS Code 中進行一些工作,然後希望為當前計算機啟用隧道,使用 VS Code 桌面 UI 會很方便。
我們將在以下部分中描述這兩種方式。
使用“code”CLI
您可以透過 code
CLI 建立和使用隧道。
-
在您希望從 VS Code 客戶端開發的目標遠端計算機上安裝
code
CLI。CLI 在 VS Code 客戶端和您的遠端計算機之間建立隧道。CLI 已自動內建到 VS Code 桌面版中——無需額外設定。替代下載方式
此外,您可以透過下載頁面上的獨立安裝來獲取 CLI,這與 VS Code 桌面版安裝是分開的。
您還可以透過遠端計算機的終端安裝和解壓 CLI。如果您的遠端計算機沒有 UI,這可能會特別有用。
curl -Lk 'https://vscode.com.tw/sha/download?build=stable&os=cli-alpine-x64' --output vscode_cli.tar.gz tar -xf vscode_cli.tar.gz
注意:如果您使用的是獨立安裝或終端安裝,以下部分中的命令將以
./code
而非code
開頭。 -
使用
tunnel
命令建立安全隧道code tunnel
此命令在此計算機上下載並啟動 VS Code Server,然後建立到它的隧道。
注意:首次在計算機上啟動隧道時,系統會提示您接受伺服器許可條款。您還可以在命令列上傳遞
--accept-server-license-terms
以避擴音示。 -
此 CLI 將輸出一個與此遠端計算機繫結的 vscode.dev URL,例如
https://vscode.dev/tunnel/<machine_name>/<folder_name>
。您可以在您選擇的客戶端上開啟此 URL。 -
當您首次在此客戶端上開啟 vscode.dev URL 時,系統會提示您登入您的 GitHub 帳戶,網址為
https://github.com/login/oauth/authorize...
。這會將您驗證到隧道服務,以確保您有權訪問正確的遠端計算機集。
使用 VS Code UI
-
在您希望開啟隧道訪問的遠端計算機上開啟 VS Code。
-
在 VS Code 賬戶選單中,選擇開啟遠端隧道訪問選項,如下圖所示。您也可以在 VS Code 中開啟命令面板 (F1) 並執行命令 Remote Tunnels: Turn on Remote Tunnel Access...。
-
系統將提示您登入 GitHub。登入後,隧道將在您當前的計算機上啟動,您將能夠遠端連線到此計算機。
-
在您選擇的客戶端中,您可以從上述通知中開啟 vscode.dev 連結並開始編碼!
注意:遠端計算機只能在 VS Code 在其上執行時才能透過隧道訪問。一旦您退出 VS Code,就無法再透過隧道訪問它,直到您再次在那裡啟動 VS Code 或執行
code tunnel
CLI 命令。
遠端隧道擴充套件
您透過 code
CLI 或 VS Code UI 開啟的 vscode.dev 例項預裝了 Remote - Tunnels 擴充套件。
如果您已經在 VS Code(桌面版或網頁版)中工作,並且希望連線到遠端隧道,您可以直接安裝和使用Remote - Tunnels擴充套件。安裝擴充套件後,開啟命令面板 (F1) 並執行命令 Remote Tunnels: Connect to Tunnel。您將能夠連線到任何具有活動隧道的遠端計算機。
您還可以在“遠端資源管理器”中檢視您的遠端計算機,您可以透過命令 Remote Explorer: Focus on Remote View 聚焦於該檢視。
與其他遠端開發擴充套件一樣,您的遠端計算機名稱將顯示在左下角的綠色遠端指示器中。單擊此指示器是探索遠端隧道命令的另一種方式,以及關閉遠端連線或安裝 VS Code 桌面的選項。
在容器中開啟遠端隧道主機上的資料夾
您可以結合使用 Remote - Tunnels 和 Dev Containers 擴充套件,在容器內部開啟遠端主機上的資料夾。您甚至不需要在本地安裝 Docker 客戶端。
操作步驟如下:
- 按照 安裝 步驟在您的遠端主機上安裝 Docker,並在本地安裝 VS Code 和 Dev Containers 擴充套件。
- 按照 Remote - Tunnels 擴充套件的 入門 說明設定隧道,連線到它並在其中開啟資料夾。
- 從命令面板(F1,⇧⌘P (Windows, Linux Ctrl+Shift+P))使用 開發容器:在容器中重新開啟 命令。
其餘的 Dev Containers 快速入門 照常適用。您可以在 Dev Containers 擴充套件文件 中瞭解更多資訊。如果此模型不符合您的需求,您還可以參閱 在遠端 Docker 主機上開發 文章以獲取其他選項。
常見問題
Remote Tunnels、VS Code Server 和 Remote Development 之間有什麼關係?
Visual Studio Code 遠端開發 允許您將容器、遠端計算機或適用於 Linux 的 Windows 子系統 (WSL) 用作功能齊全的開發環境。
遠端開發透過將某些命令的執行轉移到“遠端伺服器”,即 VS Code Server,使您的本地 VS Code 安裝能夠透明地與原始碼和執行時環境在其他機器(無論是虛擬的還是物理的)上進行互動。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 install
和code tunnel service uninstall
來安裝和移除它們。 - 使用
no-sleep
選項,即code tunnel --no-sleep
,以防止您的遠端機器進入睡眠狀態。
如 code
CLI 文件 中所述,您可以透過 code tunnel --help
探索所有可能的 CLI 命令和選項。