You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置SSH通过IAP隧道连接GCP虚拟机实现VS Code远程开发

GCP私有虚拟机通过IAP隧道配置VS Code远程SSH

问题背景

我有一台GCP上的私有虚拟机,只有内部IP。要在VS Code里远程开发并通过SSH连接它,只能用IAP隧道。

我已经在CLI执行了以下gcloud命令生成SSH密钥:

gcloud compute ssh vm-instance-name -zone us-central1-a --tunnel-through-iap --dry-run

得到的输出是:

"C:\Users\username\AppData\Local\Google\Cloud-SDK\google-cloud-sdk\bin\sdk\putty.exe" -t -i C:\Users\username\.ssh\google_compute_engine.ppk -proxycmd ""C:\\Users\\username\\AppData\\Local\\Google\\Cloud-SDK\\google-cloud-sdk\\bin\\..\\platform\\bundledpython\\python.exe" "-S" "C:\\Users\\username\\AppData\\Local\\Google\\Cloud-SDK\\google-cloud-sdk\\lib\\gcloud.py" compute start-iap-tunnel ssh-remote-vm %port --listen-on-stdin --project=project-name --zone=us-central1-a --verbosity=warning" rajamannar_k@compute.1363457738033948822

我当前的~/.ssh/config配置如下:

Host compute.1363457738033948822
    HostName compute.1363457738033948822
    IdentityFile C:\Users\rajamannar_k\.ssh\google_compute_engine
    CheckHostIP no
    UserKnownHostsFile C:\Users\rajamannar_k\.ssh\google_compute_known_hosts
    HostKeyAlias compute.1363457738033948822
    IdentitiesOnly yes
    StrictHostKeyChecking no
    ProxyCommand "C:\\Users\\rajamannar_k\\AppData\\Local\\Google\\Cloud-SDK\\google-cloud-sdk\\bin\\..\\platform\\bundledpython\\python.exe" "-S" "C:\\Users\\rajamannar_k\\AppData\\Local\\Google\\Cloud-SDK\\google-cloud-sdk\\lib\\gcloud.py" compute start-iap-tunnel ssh-remote-vm %port --listen-on-stdin --project=project-name --zone=us-central1-a --verbosity=warning
    ProxyUseFdpass no
    User rajamannar_k

请问怎么配置~/.ssh/config才能连接虚拟机进行远程开发?或者在VS Code的「Remote-SSH: add-new-host」里应该输入什么命令?(备注:我用的是Windows机器)


解决方案

一、修正~/.ssh/config配置

你当前的配置里有个关键错误:ProxyCommand中的ssh-remote-vm要替换成你的实际虚拟机实例名(也就是执行gcloud compute ssh时用的vm-instance-name)。另外建议简化路径,直接调用gcloud命令更可靠,修改后的配置如下:

Host gcp-private-vm  # 可以自定义一个好记的主机名,比如这个
    HostName compute.1363457738033948822
    User rajamannar_k
    IdentityFile C:\Users\rajamannar_k\.ssh\google_compute_engine
    CheckHostIP no
    UserKnownHostsFile C:\Users\rajamannar_k\.ssh\google_compute_known_hosts
    HostKeyAlias compute.1363457738033948822
    IdentitiesOnly yes
    StrictHostKeyChecking no
    # 简化ProxyCommand,避免复杂路径引用
    ProxyCommand gcloud compute start-iap-tunnel %h %p --listen-on-stdin --project=project-name --zone=us-central1-a
    ProxyUseFdpass no

配置说明:

  • 自定义Host字段为好记的名称,方便VS Code里快速选择
  • %h会自动替换成HostName,%p替换成默认SSH端口22,无需手动填写
  • 确保--project和--zone参数和你的GCP项目、虚拟机区域完全一致

配置完成后,打开VS Code的Remote-SSH插件,就能看到你自定义的gcp-private-vm主机,直接选择连接即可。

二、VS Code「Remote-SSH: add-new-host」直接输入命令

如果不想手动修改配置文件,可在VS Code的「Remote-SSH: add-new-host」对话框中输入以下命令:

ssh rajamannar_k@compute.1363457738033948822 -o "ProxyCommand=gcloud compute start-iap-tunnel %h %p --listen-on-stdin --project=project-name --zone=us-central1-a" -i "C:\Users\rajamannar_k\.ssh\google_compute_engine"

输入完成后,VS Code会自动将配置写入~/.ssh/config,之后就能直接连接虚拟机。

三、验证配置

配置完成后,先在本地命令行测试连接是否正常:

# 如果用了自定义Host名
ssh gcp-private-vm

# 或者直接用完整命令
ssh rajamannar_k@compute.1363457738033948822 -o "ProxyCommand=gcloud compute start-iap-tunnel %h %p --listen-on-stdin --project=project-name --zone=us-central1-a"

如果命令行能成功连接,VS Code的Remote-SSH就能正常使用。

内容的提问来源于stack exchange,提问作者mannar-senpai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:01:18