使用 VS Code Remote Tunnel 進行遠端開發
簡介
VS Code Remote Tunnel 是 VS Code Remote Development 生態系中的一種遠端開發方式。它可以讓我們透過安全通道連線到另一台機器,例如家中的桌機、公司內網中的工作站、雲端 VM,或沒有完整桌面環境的 Linux 主機,並直接在 VS Code 中操作遠端檔案、終端機、擴充套件與開發環境。
和常見的 SSH 遠端開發相比,Remote Tunnel 的最大特色是不需要先設定 SSH Server,也通常不需要調整防火牆或路由器連接埠。遠端機器只要能主動連到外部服務,就可以透過 VS Code 建立 Tunnel;開發端則可以使用 VS Code Desktop、安裝 Remote - Tunnels 擴充套件的 VS Code,或直接透過瀏覽器開啟 vscode.dev 進行連線。
官方文件說明,Remote Tunnel 背後會在遠端機器上啟動 VS Code Server,讓 VS Code 的編輯、終端機、偵錯與擴充套件能力可以在遠端環境中執行。這代表原始碼不一定需要下載到本機,實際建置與執行也可以留在遠端主機上完成。
官方參考文件:Developing with Remote Tunnels
適合使用 Remote Tunnel 的情境
Remote Tunnel 很適合用在「遠端機器能連外,但不方便被外部直接連入」的場景。例如家用網路後方的桌機、公司內部工作站、臨時雲端主機,或需要在外出時接回固定開發環境的情境。
常見使用情境包含:
- 外出時連回自己的開發桌機:程式碼、SDK、資料庫與測試環境都留在桌機上,筆電只負責連線與編輯。
- 臨時使用雲端 VM 開發:在 VM 上安裝工具鏈與執行環境,再透過 Remote Tunnel 從本機 VS Code 連進去。
- 沒有公網 IP 或不想開 SSH Port:遠端機器只需要主動建立 Tunnel,不需要讓外部直接連入。
- 使用瀏覽器開發:在不方便安裝 VS Code Desktop 的裝置上,可以透過 vscode.dev 連到遠端環境。
- 搭配 Dev Containers:連到遠端主機後,再開啟遠端主機上的容器環境進行開發。
如果你的團隊已經有完整 SSH 管理、跳板機與金鑰控管,Remote - SSH 仍然是很好的選擇。但如果只是想快速把某台機器變成可連線的開發主機,Remote Tunnel 的設定成本會低很多。
Remote Tunnel 的運作概念
Remote Tunnel 的架構可以拆成三個角色:
| 角色 | 說明 |
|---|---|
| 遠端主機 | 實際存放原始碼、工具鏈與執行環境的機器 |
| VS Code Server | 安裝在遠端主機上的服務,負責處理檔案、終端機、擴充套件與偵錯等能力 |
| VS Code Client | 使用者操作的端點,可以是 VS Code Desktop 或 vscode.dev |
建立 Tunnel 後,VS Code Client 會透過 Remote - Tunnels 連到遠端主機上的 VS Code Server。多數開發行為都會在遠端主機上執行,例如 npm install、dotnet build、Docker 操作、測試指令或本機終端機命令。Client 端主要負責提供編輯器介面與互動體驗。
Remote Tunnel 需要使用 GitHub 或 Microsoft 帳號進行驗證。官方文件也提到,建立與連線 Tunnel 的兩端都需要使用同一個帳號驗證,藉此確認你有權限存取對應的遠端機器。
方式一:使用 code CLI 建立 Tunnel
如果遠端主機已經安裝 VS Code Desktop,通常會內建 code CLI。如果遠端主機沒有桌面環境,也可以從 VS Code 官方下載獨立 CLI。這種方式很適合 Linux Server 或雲端 VM。
在遠端主機上執行:
1 | code tunnel |
第一次啟動時,CLI 會提示你接受 VS Code Server 授權條款,並引導你登入 GitHub 或 Microsoft 帳號。登入完成後,CLI 會在遠端機器上下載並啟動 VS Code Server,接著建立 Tunnel。
成功後,終端機會顯示一組 vscode.dev 連結,格式類似:
1 | https://vscode.dev/tunnel/<machine_name>/<folder_name> |
你可以直接用瀏覽器開啟這個網址,也可以在另一台電腦上的 VS Code 中透過 Remote - Tunnels 擴充套件連線。
如果想在第一次啟動時避免授權條款互動提示,可以加上:
1 | code tunnel --accept-server-license-terms |
若遠端主機可能進入睡眠狀態,也可以使用:
1 | code tunnel --no-sleep |
這個參數可以協助避免遠端機器休眠導致 Tunnel 中斷。不過實際效果仍會受到作業系統電源設定影響,如果要長時間穩定使用,仍建議同時檢查遠端機器的電源與睡眠設定。
方式二:透過 VS Code 介面啟用 Tunnel
如果你已經在遠端機器上開啟 VS Code Desktop,也可以直接透過圖形介面啟用 Remote Tunnel。
操作方式如下:
- 在遠端機器上開啟 VS Code。
- 點擊左下角帳號選單。
- 選擇 Turn on Remote Tunnel Access。
- 依照提示登入 GitHub 或 Microsoft 帳號。
- 等待 VS Code 顯示 Tunnel 已啟用的通知。
也可以使用命令面板執行:
1 | Remote Tunnels: Turn on Remote Tunnel Access... |
這種方式適合你原本就正在遠端機器上用 VS Code 工作,只是想順手把這台機器開放成可遠端連線的開發主機。
需要注意的是,透過 VS Code UI 啟用的 Tunnel,通常需要遠端機器上的 VS Code 持續執行。若關閉 VS Code,Tunnel 也會停止,之後必須重新開啟 VS Code 或改用 code tunnel CLI 啟動。
從另一台機器連線到 Tunnel
當遠端主機已經啟用 Tunnel 後,可以從另一台機器連線回去。常見做法有兩種。
使用 vscode.dev
如果 CLI 或 VS Code 通知中已經提供 vscode.dev 連結,可以直接用瀏覽器開啟。第一次在該瀏覽器連線時,系統會要求登入同一個 GitHub 或 Microsoft 帳號。登入完成後,就能在瀏覽器版 VS Code 中開啟遠端資料夾。
這種方式不需要在目前裝置安裝 VS Code Desktop,很適合臨時借用電腦、平板,或在受限環境中快速處理遠端程式碼。
不過,vscode.dev 畢竟是執行在瀏覽器中的 VS Code,體驗仍會受到瀏覽器沙盒與 Web 擴充套件支援度影響。透過 Remote Tunnel 連上遠端主機後,終端機、檔案操作與多數遠端開發能力會比單純開啟 GitHub Repository 更完整,但仍建議先確認自己需要的擴充套件與功能是否能在網頁端正常使用。
常見限制包含:
- 部分擴充套件無法在網頁端執行:需要本機原生程式、Node.js runtime、系統 API 或特定桌面能力的擴充套件,可能無法安裝或只能提供部分功能。
- Copilot Chat 或 Agent 類功能可能不可用:在瀏覽器版 VS Code 中,若目前帳號授權、組織政策、擴充套件支援狀態,或遠端工作區環境不符合需求,Copilot Chat、Agent mode、部分工具呼叫與互動式能力可能不會出現或無法正常使用。若文章或教學需要完整 Copilot Chat 體驗,建議改用 VS Code Desktop 連線到同一個 Tunnel。
- 瀏覽器快捷鍵可能被攔截:例如部分瀏覽器會保留某些快捷鍵,導致命令面板、開新檔案或關閉編輯器的操作和桌面版不同。
- 瀏覽器權限會影響體驗:剪貼簿、彈出視窗、檔案存取與登入流程可能需要額外授權;公司網路或瀏覽器安全政策也可能阻擋必要連線。
- 行動裝置畫面較受限:雖然可以在平板或手機上使用,但小螢幕、鍵盤操作與瀏覽器限制會讓長時間開發比較吃力。
簡單來說,vscode.dev 很適合臨時修改、檢查程式碼或在沒有桌面版 VS Code 的裝置上救急;如果要長時間開發、重度使用 Copilot Chat、執行複雜擴充套件或進行完整偵錯流程,VS Code Desktop 通常會更穩定。
使用 VS Code Desktop
如果要從本機 VS Code Desktop 連線,可以安裝 Remote - Tunnels 擴充套件。安裝後開啟命令面板,執行:
1 | Remote Tunnels: Connect to Tunnel |
接著選擇要連線的遠端機器與資料夾即可。你也可以開啟 Remote Explorer,在 Tunnels 區塊中查看目前帳號可用的遠端機器。
連線成功後,VS Code 左下角的遠端狀態列會顯示目前連線的 Tunnel 主機名稱。之後開啟終端機、安裝擴充套件、執行指令時,都會針對遠端環境進行操作。
常用指令整理
Remote Tunnel 的 CLI 指令不多,但日常使用時很實用。
| 指令 | 說明 |
|---|---|
code tunnel |
在目前機器啟動 Tunnel |
code tunnel --accept-server-license-terms |
啟動 Tunnel 並接受 VS Code Server 授權條款 |
code tunnel --no-sleep |
啟動 Tunnel 並嘗試避免機器進入睡眠 |
code tunnel --help |
查看 Tunnel CLI 可用參數 |
code tunnel unregister |
移除目前機器與 Tunnel 服務的註冊關聯 |
code tunnel service install |
將 Tunnel 安裝成服務,適合需要長時間執行的主機 |
code tunnel service uninstall |
移除 Tunnel 服務 |
如果只是短時間使用,直接執行 code tunnel 就很夠用。若這台機器會長期作為遠端開發主機,才需要考慮把 Tunnel 安裝成服務,讓它在背景持續執行。
安全性與限制
Remote Tunnel 使用上很方便,但仍然要理解它的安全模型與限制。
首先,Tunnel 需要帳號驗證。建立與連線時都需要使用 GitHub 或 Microsoft 帳號,避免任何人只靠網址就能連到你的機器。其次,官方文件提到 VS Code 會透過 Azure 上的服務建立對外連線,一般情況下不需要開啟本機網路監聽或調整防火牆規則。
連線建立後,VS Code 會透過 Tunnel 建立加密連線來提供遠端開發體驗。對使用者來說,這比直接暴露 SSH Port 更容易管理,但仍然不能把它當成「完全不需要控管」的通道。實務上建議注意以下幾點:
- 遠端主機只登入自己的 GitHub 或 Microsoft 帳號。
- 不使用時關閉 Tunnel,或確認服務只在必要機器上執行。
- 定期檢查 Remote Explorer 中註冊的機器,移除不再使用的項目。
- 遠端主機本身仍要維持系統更新、磁碟權限與帳號安全。
- 團隊環境應確認公司政策是否允許使用 dev tunnels 服務。
另外,Tunnel 服務本身也有使用限制。官方文件提到,目前每個帳號可註冊的 Tunnel 數量有限制,若超過上限,CLI 可能會移除一個未使用的 Tunnel。這類限制可能隨時間調整,因此正式導入前仍建議查看官方文件。
Remote Tunnel 與其他遠端開發方式的比較
VS Code 有多種遠端開發方式,Remote Tunnel 不是要取代所有選項,而是補上「不方便建立入站連線」的使用情境。
| 方式 | 適合情境 | 特點 |
|---|---|---|
| Remote - SSH | 已有 SSH Server、金鑰與網路設定 | 成熟、可控,適合長期伺服器開發 |
| Dev Containers | 專案需要一致的容器化開發環境 | 適合團隊統一工具鏈與相依套件 |
| WSL | Windows 本機上的 Linux 開發環境 | 適合在 Windows 上開發 Linux 專案 |
| Remote Tunnel | 遠端主機可連外,但不方便被外部連入 | 設定簡單,可搭配 vscode.dev 使用 |
如果你只是想從筆電連回家中桌機,Remote Tunnel 的體驗會很直接。如果你管理的是正式伺服器,且團隊已經有 SSH、VPN、權限與稽核流程,Remote - SSH 可能更符合既有治理方式。
實務使用建議
實際使用 Remote Tunnel 時,可以把它當成「快速接回既有開發環境」的工具。以下是幾個比較實用的建議。
1. 先確認遠端主機的開發環境
Remote Tunnel 只是讓你連進遠端機器,不會自動幫你安裝 Node.js、Java、Docker、SDK 或資料庫。連線前建議先確認遠端主機已經具備專案需要的工具鏈。
2. 將大型建置留在遠端執行
如果遠端主機效能比本機好,可以把建置、測試、Docker build 或大型資料處理都放在遠端執行。本機只要保持穩定網路連線,就能取得接近本機 VS Code 的操作體驗。
3. 注意擴充套件安裝位置
在遠端視窗中安裝擴充套件時,有些會安裝在本機,有些會安裝在遠端。像語言伺服器、偵錯器、格式化工具這類需要讀取專案與執行環境的擴充套件,通常會安裝在遠端主機上。
4. 不使用時關閉 Tunnel
如果只是臨時連線,可以在終端機中按下 Ctrl + C 停止 code tunnel。如果是透過 VS Code UI 啟用,可以執行:
1 | Remote Tunnels: Turn off Remote Tunnel Access... |
若要移除這台機器與帳號的註冊關聯,可以在該機器上執行:
1 | code tunnel unregister |
5. 長時間使用時改用服務模式
如果這台機器會固定作為遠端開發主機,可以考慮:
1 | code tunnel service install |
這樣就不需要每次手動開啟終端機維持 code tunnel 執行。若之後不再需要,則使用:
1 | code tunnel service uninstall |
小結
VS Code Remote Tunnel 提供了一種很輕量的遠端開發方式。它不要求遠端主機開放 SSH Port,也不一定需要 VPN 或複雜的網路設定,只要遠端主機能主動連外,就能透過 VS Code Server 建立可連線的開發環境。
對個人開發者來說,Remote Tunnel 很適合用來連回自己的桌機或臨時 VM;對團隊來說,它則可以作為特定場景下的補充工具,例如臨時支援、測試環境操作,或搭配 Dev Containers 建立更完整的遠端工作流程。
使用時仍要注意帳號安全、遠端主機管理與組織政策。只要理解它的運作方式與限制,Remote Tunnel 就能讓「在哪台機器上寫程式」這件事變得更有彈性,也讓 VS Code 的遠端開發體驗更容易落地。