遠端開發的核心不是「把檔案傳來傳去」,而是讓本機 VS Code 直接開啟遠端主機上的目錄。VS Code Remote SSH 的價值就在這裡:本機 Windows 負責介面和互動,遠端主機負責保存檔案並提供遠端終端機。

這篇文章從實際連接遠端主機的角度出發,記錄 VS Code Remote SSH 的兩種常見設定方式:金鑰對登入和密碼登入。

適用場景

這個方案適合以下幾類工作:

  • 在雲主機、NAS、軟路由或開發機上直接編輯遠端檔案;
  • 需要用 VS Code 管理遠端目錄和遠端終端機;
  • 不想頻繁透過 SFTP、scp 或檔案管理器手動同步檔案;
  • 希望在多個遠端主機之間快速切換。

這篇文章只討論如何連接遠端主機,不展開專案複製、依賴安裝或建置流程。

準備連線資訊

連線前先準備這些資訊:

HostName:遠端主機公網 IP 或網域
User:遠端使用者名稱,例如 root、ubuntu、debian 或自訂使用者
Port:SSH 連接埠,預設 22,也可以是自訂連接埠
IdentityFile:本機私鑰路徑,使用金鑰登入時需要
Password:遠端使用者密碼,使用密碼登入時需要,不建議寫入 config

Windows 10/11 通常已經內建 OpenSSH Client。可以在 PowerShell 中檢查:

ssh -V

如果能看到 OpenSSH 版本,表示本機 SSH 用戶端可用。

方式一:使用金鑰對登入

金鑰對登入是更推薦的方式。它不需要每次輸入伺服器密碼,也更適合長期使用 VS Code Remote SSH。

產生 SSH 金鑰

在 PowerShell 中執行:

ssh-keygen -t ed25519 -C "vscode-remote"

預設會產生:

C:\Users\User\.ssh\id_ed25519
C:\Users\User\.ssh\id_ed25519.pub

其中:

  • id_ed25519 是私鑰,只保存在本機;
  • id_ed25519.pub 是公鑰,可以放到遠端主機的 authorized_keys。

複製公鑰內容:

Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub"

然後把這段內容追加到遠端主機的:

~/.ssh/authorized_keys

遠端主機上的權限建議設定為:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

準備好公鑰後,後面在 VS Code 的 SSH Host 設定裡填入本機私鑰路徑即可。

方式二:使用密碼登入

如果只是臨時連接一台測試主機,或者還沒有來得及設定公鑰,也可以直接使用密碼登入。此時本機 SSH Host 設定不需要寫 IdentityFile。如果伺服器允許密碼登入,VS Code Remote SSH 連接這個 Host 時會跳出密碼輸入框。

需要注意的是,密碼登入依賴遠端 SSH 服務端允許 PasswordAuthentication。有些 VPS 映像預設關閉密碼登入,只允許金鑰登入;如果開啟密碼登入,建議配合強密碼、非預設連接埠、防火牆或 Fail2ban 一類的登入保護策略。

連接步驟

1. 安裝 Remote - SSH 擴充套件

安裝 VS Code 擴充套件:

Remote - SSH

安裝完成後建議重啟一次 VS Code,避免左側遠端資源管理器、命令面板和 SSH 設定入口沒有立即刷新。

2. 設定 SSH Host

開啟命令面板:

Ctrl + Shift + P
Remote-SSH: Open SSH Configuration File...

選擇 Windows 使用者目錄下的 SSH 設定檔:

C:\Users\User\.ssh\config

如果使用金鑰登入,寫入類似設定:

Host blog-dev
  HostName 你的伺服器IP或網域
  User root
  Port 22
  IdentityFile C:\Users\User\.ssh\id_ed25519
  ServerAliveInterval 30
  ServerAliveCountMax 3

如果使用密碼登入,可以不寫 IdentityFile:

Host blog-dev-password
  HostName 你的伺服器IP或網域
  User root
  Port 22
  PreferredAuthentications password,keyboard-interactive

儲存設定後,VS Code 的遠端資源管理器中會出現對應的 Host。

3. 連接遠端主機

連接方式有兩種。可以繼續使用命令面板:

Ctrl + Shift + P
Remote-SSH: Connect to Host...
blog-dev

也可以點擊左側活動列的遠端資源管理器圖示,在 遠端(隧道/SSH) 視圖裡展開 SSH,選擇剛設定的主機並連接。連接成功後,主機旁邊會顯示已連接狀態。

首次連接時,VS Code 會在遠端主機安裝 VS Code Server。如果使用密碼登入,VS Code 會跳出密碼輸入框;如果使用金鑰登入,通常會直接進入遠端視窗。

4. 開啟遠端目錄

連接成功後,在遠端資源管理器中展開主機,選擇需要開啟的遠端目錄,例如:

/opt

或:

/home/deploy

開啟後,本機 VS Code 視窗實際操作的是遠端主機上的目錄。後續在資源管理器中編輯檔案、開啟終端機、保存內容,都會發生在遠端主機上。

小容量 VPS 的限制

VS Code Remote SSH 首次連接時會在遠端主機安裝 VS Code Server,通常位於:

~/.vscode-server

後續安裝遠端擴充套件、開啟多個遠端視窗或保留舊版本 VS Code Server 時,也會繼續占用遠端磁碟。對於 edgeproxy 這類只有 5G 左右儲存分配的小型 VPS,這個限制會比較明顯:~/.vscode-server 和遠端擴充套件快取疊加後,可能把磁碟占滿。磁碟滿了以後,常見表現包括 VS Code Server 安裝失敗、遠端終端機異常、檔案保存失敗。

連接前建議先檢查空間:

df -h
du -sh ~/.vscode-server ~/.cache 2>/dev/null

如果空間緊張,可以優先減少遠端擴充套件數量,或者移除舊的 VS Code Server 版本目錄:

rm -rf ~/.vscode-server/bin/<舊版本目錄>

如果這台 VPS 主要用於代理、轉發或輕量服務,不建議把它當成完整開發機長期使用。Remote SSH 更適合磁碟空間、記憶體和 CPU 都有一定餘量的遠端主機。

常見問題

1. 第一次連線很慢

首次連接時,VS Code 會在遠端主機安裝服務端元件。只要網路穩定,等待安裝完成即可。後續連接通常會明顯更快。

2. 金鑰明明正確但仍然要求密碼

優先檢查三處:

ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys

權限建議:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

另外確認本機 IdentityFile 指向的是私鑰,而不是 .pub 公鑰。

3. known_hosts 報錯

如果伺服器重裝過系統或 IP 被重複使用,本機可能出現 host key 衝突。可以先確認確實是你的伺服器,再清理舊記錄:

ssh-keygen -R 伺服器IP或網域

然後重新連線。

小結

VS Code Remote SSH 的重點不是「遠端桌面」,而是讓 VS Code 透過 SSH 直接管理遠端主機上的目錄。實際使用時,把順序記住就夠了:安裝 Remote - SSH 擴充套件,重啟 VS Code,設定 SSH Host,然後從遠端資源管理器連接主機並開啟目錄。

參考