VSCode Tunnel:不需要 SSH、不需要 VPN,打開瀏覽器就能遠端開發
今天試了一下 VSCode 的 Remote Tunnel 功能,體驗出乎意料地好,在這邊記錄一下心得跟完整的設定流程。
為什麼我會注意到這個功能
工作上偶爾會遇到幾種尷尬的情境:
- 公司內網環境:機器在內網,SSH 要通過跳板機層層轉發,設定起來繁瑣又容易斷線
- 雲端環境的金鑰問題:有些服務的金鑰或憑證只存放在 server 上,不方便也不應該拉到本機
- 臨時要改 code:人在外面,手邊只有一台平板或借來的電腦,要開個 SSH client 還得先裝軟體
VSCode Tunnel 的運作方式恰好解決了這些問題——它不依賴 SSH,也不需要設定 VPN 或打開任何 port。只要遠端機器能連上網路,你就能從任何有瀏覽器的裝置連進去寫 code。
原理簡介
VSCode Tunnel 的原理其實不複雜:
- 遠端機器上執行
code tunnel,它會啟動一個 VS Code Server 並透過 Microsoft 的 dev tunnels 服務建立一條加密通道 - 你用 GitHub 或 Microsoft 帳號登入做身份驗證
- 從任何地方——瀏覽器的 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
如果偏好桌面版的完整體驗:
- 安裝 Remote - Tunnels 擴充套件
- 打開 Command Palette(
F1或Ctrl+Shift+P) - 搜尋並執行 Remote Tunnels: Connect to Tunnel...
- 登入相同的 GitHub 帳號
- 從清單中選擇你的機器
或者也可以透過左側的 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,就能得到近乎本機的開發體驗。如果你有類似的遠端開發需求,推薦試試看。
參考資源:
