2026年2月11日 31 分钟阅读

VSCode Tunnel:不需要 SSH、不需要 VPN,打開瀏覽器就能遠端開發

VSCode工具介紹遠端開發

今天試了一下 VSCode 的 Remote Tunnel 功能,體驗出乎意料地好,在這邊記錄一下心得跟完整的設定流程。

為什麼我會注意到這個功能

工作上偶爾會遇到幾種尷尬的情境:

  • 公司內網環境:機器在內網,SSH 要通過跳板機層層轉發,設定起來繁瑣又容易斷線
  • 雲端環境的金鑰問題:有些服務的金鑰或憑證只存放在 server 上,不方便也不應該拉到本機
  • 臨時要改 code:人在外面,手邊只有一台平板或借來的電腦,要開個 SSH client 還得先裝軟體

VSCode Tunnel 的運作方式恰好解決了這些問題——它不依賴 SSH,也不需要設定 VPN 或打開任何 port。只要遠端機器能連上網路,你就能從任何有瀏覽器的裝置連進去寫 code。

原理簡介

VSCode Tunnel 的原理其實不複雜:

  1. 遠端機器上執行 code tunnel,它會啟動一個 VS Code Server 並透過 Microsoft 的 dev tunnels 服務建立一條加密通道
  2. 你用 GitHub 或 Microsoft 帳號登入做身份驗證
  3. 從任何地方——瀏覽器的 vscode.dev 或桌面版 VSCode——用同一個帳號連進去

整個過程不需要打開 port、不需要固定 IP、不需要 SSH key。


步驟一:取得 Code CLI

方法 A:已安裝桌面版 VSCode

如果你的遠端機器已經裝了 VSCode Desktop,那 code CLI 已經內建,直接使用即可。

方法 B:獨立安裝 CLI(推薦用於 server)

大多數 server 環境不會安裝桌面版 VSCode,這時候可以只下載 CLI:

Linux(x64):

curl -Lk 'https://code.visualstudio.com/sha/download?build=stable&os=cli-linux-x64' --output vscode_cli.tar.gz
tar -xf vscode_cli.tar.gz

Linux(ARM64):

curl -Lk 'https://code.visualstudio.com/sha/download?build=stable&os=cli-linux-arm64' --output vscode_cli.tar.gz
tar -xf vscode_cli.tar.gz

Windows:

可以直接到 VSCode 下載頁面 下載 CLI 版本,或者如果已安裝桌面版則直接使用 code 指令。

解壓後會得到一個 code 執行檔(獨立安裝的話,使用 ./code 來執行)。

步驟二:建立 Tunnel

code tunnel

第一次執行時,會出現授權提示。輸入 y 接受 server license 之後,終端機會顯示類似這樣的訊息:

* Visual Studio Code Server
*
* By using the software, you agree to
* the Visual Studio Code Server License Terms (https://aka.ms/vscode-server-license)...
*
* To grant access to the server, please log into
* https://github.com/login/device and use code XXXX-XXXX

到瀏覽器打開 https://github.com/login/device,輸入畫面上的 device code 完成 GitHub 帳號驗證。

驗證成功後,CLI 會提示你為這台機器命名:

What would you like to call this machine?
> my-work-server

接著 tunnel 就建立完成了,終端機會輸出一個 vscode.dev 的連結:

Open this link in your browser https://vscode.dev/tunnel/my-work-server

常用參數

參數說明
--accept-server-license-terms跳過 license 確認提示
--name <name>直接指定機器名稱,跳過互動式命名
--no-sleep防止遠端機器進入睡眠模式

一行搞定的寫法:

code tunnel --accept-server-license-terms --name my-work-server

步驟三:設定為系統服務(開機自動啟動)

手動執行 code tunnel 的問題是——你關掉終端機或登出 session,tunnel 就斷了。設定為系統服務可以讓 tunnel 在背景持續運行,甚至開機就自動啟動。

安裝服務

code tunnel service install

同樣可以帶參數:

code tunnel service install --accept-server-license-terms --name my-work-server

Linux 補充設定

在 Linux 上,tunnel 會以 systemd user service 的形式執行(服務名稱為 code-tunnel.service)。為了讓你的使用者 session 在登出後仍然保持運作,需要額外執行:

sudo loginctl enable-linger $USER

驗證服務狀態:

systemctl --user status code-tunnel.service

Windows 的行為差異

在 Windows 上,service install 會建立一個使用者登入時啟動的項目(類似開機啟動項),而非像 Linux 那樣的系統級 daemon。這表示 Windows 上需要使用者有登入桌面的 session,tunnel 才會自動啟動。

管理服務

# 查看服務日誌
code tunnel service log

# 解除安裝服務
code tunnel service uninstall

其他 Tunnel 管理指令

# 查看目前 tunnel 狀態
code tunnel status

# 取消這台機器的 tunnel 註冊
code tunnel unregister

# 查看所有可用指令
code tunnel --help

步驟四:從另一端連線

Tunnel 建立好之後,連線方式有兩種:

方法 A:透過瀏覽器(vscode.dev)

最簡單的方式——打開瀏覽器,直接訪問:

https://vscode.dev/tunnel/<你的機器名稱>

例如 https://vscode.dev/tunnel/my-work-server

登入與 tunnel 端相同的 GitHub 帳號後,瀏覽器裡就會出現完整的 VSCode 介面,操作的都是遠端機器上的檔案。Terminal、extension、debug 都可以使用。

這個方式的好處是零安裝——只要有瀏覽器就行,平板、借來的電腦、甚至手機都能用。

方法 B:透過桌面版 VSCode

如果偏好桌面版的完整體驗:

  1. 安裝 Remote - Tunnels 擴充套件
  2. 打開 Command Palette(F1Ctrl+Shift+P
  3. 搜尋並執行 Remote Tunnels: Connect to Tunnel...
  4. 登入相同的 GitHub 帳號
  5. 從清單中選擇你的機器

或者也可以透過左側的 Remote Explorer 面板,在 Tunnels 區塊中找到已註冊的機器並連線。

桌面版的好處是可以使用完整的 extension 生態系,包括一些不支援 web 版的 extension。

使用限制

在使用之前,有幾個限制需要知道:

  • 帳號上限 10 條 tunnel:每個 GitHub/Microsoft 帳號最多可以註冊 10 個 tunnel,超過的話需要先 unregister 不用的機器
  • 頻寬限制:Microsoft dev tunnels 服務有流量限制,不適合傳輸大量檔案
  • 單人使用:每個 VS Code Server instance 設計上只供一位使用者使用
  • 需要持續連線:遠端機器必須能連上網路,tunnel 才能運作(所以建議設成 service)

適合的使用場景

回到最開始的感想,我覺得 VSCode Tunnel 特別適合這些情境:

  • 公司內網開發:機器在防火牆後面,不方便設定 port forwarding 或 VPN,只要遠端機器能訪問外網就行
  • 雲端 server:SSH key、API key、憑證等敏感資訊留在 server 上,不用為了開發方便而拉到本機
  • 臨時存取:出門在外臨時需要改 code,只需要一個瀏覽器
  • 效能較弱的本機:編譯、建置等重活都在遠端跑,本機只負責顯示 UI

不適合的情境大概就是需要多人同時連線同一台機器、或者是網路極不穩定的環境(畢竟 tunnel 還是需要即時通訊的)。

總結

VSCode Tunnel 算是一個被低估的功能——設定簡單(五分鐘搞定)、不需要額外的 infrastructure,就能得到近乎本機的開發體驗。如果你有類似的遠端開發需求,推薦試試看。


參考資源: