如何使用PyCharm通过IAP隧道远程访问VM

kmbjn2e3  于 2022-11-29  发布在  PyCharm
关注(0)|答案(1)|浏览(120)

我有一个没有分配外部IP地址的Google VM示例。我打算通过安装在我本地机器(运行macOS)上的PyCharm建立SSH连接。
这可以通过gcloudIAP tunnel在终端中完成:

gcloud compute ssh <instance_name> --tunnel-through-iap

为示例添加到~./ssh/config的条目如下所示:

Host compute.<instance_id>
  HostName compute.<instance_id>
  IdentityFile /Users/<user_name>/.ssh/google_compute_engine
  CheckHostIP no
  HostKeyAlias compute.<instance_id>
  IdentitiesOnly yes
  StrictHostKeyChecking yes
  UserKnownHostsFile /Users/<user_name>/.ssh/google_compute_known_hosts
  ProxyCommand /Users/<user_name>/miniconda3/bin/python3 -S /Users/<user_name>/google-cloud-sdk/lib/gcloud.py beta compute start-iap-tunnel <instance_name> %p --listen-on-stdin --project=<project_name> --zone=us-central1-a --verbosity=warning
  ProxyUseFdpass no
  User <user_name>

使用VS Code的Remote-SSH plugin,可以直接使用此设置来建立SSH连接,而不会出现任何问题(example)。
但是,我无法通过PyCharm设置连接。SSH配置选项卡需要:

- Host: compute.<instance_id>
 - User name: compute.<instance_id>
 - Port: 22
 - Authentication type: key pair
 - Private key file: path to ~/.ssh/google_compute_engine

并抛出主机格式不正确的异常。如果我尝试使用VM示例的内部IP地址作为主机,连接将超时。
是否有类似于Remote-SSH的插件在PyCharm的VS代码中可以与IAP隧道一起正常工作?或者有任何其他方法可以在不向VM示例公开或分配外部IP的情况下设置此插件?

fnx2tebb

fnx2tebb1#

我知道这已经有一段时间了,但我只是在做同样的事情。我在~./ssh/config中使用了相同的config条目,但PyCharm正在做一些检查,以确保顶级Host值是有效的(即使它没有被使用)。我用一些可以通过验证检查的东西替换了它,但我知道我永远不会真正使用(以避免潜在的冲突)。
例如,您可以更新为:

Host mahmoud.local
  HostName compute.<instance_id>
  IdentityFile /Users/<user_name>/.ssh/google_compute_engine
  CheckHostIP no
  HostKeyAlias compute.<instance_id>
  IdentitiesOnly yes
  StrictHostKeyChecking yes
  UserKnownHostsFile /Users/<user_name>/.ssh/google_compute_known_hosts
  ProxyCommand /Users/<user_name>/miniconda3/bin/python3 -S /Users/<user_name>/google-cloud-sdk/lib/gcloud.py beta compute start-iap-tunnel <instance_name> %p --listen-on-stdin --project=<project_name> --zone=us-central1-a --verbosity=warning
  ProxyUseFdpass no
  User <user_name>

然后,当您在PyCharm中配置SSH连接时,您将需要使用Host = mahmoud.local

相关问题