jss*_*367 5 google-cloud-platform gcloud visual-studio-code vscode-remote
我正在尝试将 VSCode 连接到我的 GCP 实例,但无法连接。从终端,我可以通过 ssh 进入机器,gcloud compute ssh my_machine_name
但我不确定如何将其转换为 VSCode Remote-SSH 正在寻找的内容。当我在 VSCode 中创建配置时,我这样做了:
Host my_machine_name
HostName my_machine_name
User me@my_company.com
Run Code Online (Sandbox Code Playgroud)
但是 HostName 是错误的,因为它只是机器的名称,而不是完整的 HostName 或 IP 地址。我什至没有告诉 VSCode 它是一个 GCP 实例。如何找到主机名?我想my_machine_name
我的配置中的某个地方与真正的 HostName之间存在连接,但我找不到它。我找到了一个带有以下键的 GCP-Service.json 文件:
{
"type":
"project_id":
"private_key_id":
"private_key":
"client_email":
"client_id":
"auth_uri":
"token_uri":
"auth_provider_x509_cert_url":
"client_x509_cert_url":
}
Run Code Online (Sandbox Code Playgroud)
但我没有看到任何看起来像主机名或 IP 地址的东西。
只是为了看看,我尝试连接并收到以下错误:
Could not establish connection to "my_machine_name": Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
(请注意确定这是否相关,但有时当我第一次尝试连接时,我得到以下信息,但在我单击“重试”后,它再次返回到公钥消息):
"Could not establish connection to "my_machine_name": Remote host key has changed, port forwarding is disabled."
Run Code Online (Sandbox Code Playgroud)
所以我尝试像这样添加一个私钥:
Host my_machine
HostName my_machine
User user@my_company.com
IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
我还尝试了 GCP-Service.json 文件中的私钥,但得到了相同的结果。我应该怎么做才能将 VSCode 连接到我的 GCP 实例?
Pan*_* Li 11
只需运行gcloud compute config-ssh
,您就会进入example-instance.us-central1-a.MY-PROJECT
您的 vs 代码 ssh 目标。config-ssh 上的详细信息
根据我的评论,这很简单并且对我有用。
假设:
PROJECT=[[YOUR-PROJECT]]
INSTANCE=[[YOUR-INSTANCE]]
ZONE=[[YOUR-ZONE]]
Run Code Online (Sandbox Code Playgroud)
这有点hacky,但是:
USER=$(\
gcloud compute ssh ${INSTANCE} \
--zone=${ZONE} \
--project=${PROJECT} \
--command "whoami") && echo ${USER}
Run Code Online (Sandbox Code Playgroud)
或者:
gcloud auth list --format="value(account)"
[[USER]]@[[DOMAIN]]
Run Code Online (Sandbox Code Playgroud)
和:
IP=$(\
gcloud compute instances describe ${INSTANCE} \
--zone=${ZONE} \
--project=${PROJECT} \
--format='value(networkInterfaces[0].accessConfigs[0].natIP)') && echo ${IP}
Run Code Online (Sandbox Code Playgroud)
注意上面假设有一个网络接口和一个公共IP
然后,将这些值替换为上面的值:
Host compute_engine
HostName [[IP]]
IdentityFile ~/.ssh/google_compute_engine
User [[USER]]
Port 22
Run Code Online (Sandbox Code Playgroud)
小智 6
也可以用于gcloud beta compute start-iap-tunnel INSTANCE_NAME 22 --listen-on-stdin
隧道 ssh 访问。(即使没有公网IP)
你的 ssh 配置文件:
Host YOUR_SERVER_NAME
IdentityFile ~/.ssh/google_compute_engine
User YOUR_USERNAME
HostName YOUR_INSTANCE_NAME
ProxyCommand gcloud beta compute start-iap-tunnel %h 22 --listen-on-stdin
Run Code Online (Sandbox Code Playgroud)
注意:如果你在 Windows 上运行 vscode 客户端,你可能需要这样的东西
ProxyCommand powershell -Command "gcloud beta compute start-iap-tunnel %h 22 --listen-on-stdin"
Run Code Online (Sandbox Code Playgroud)
您始终可以使用 , 测试您的 ssh 连接ssh YOUR_SERVER_NAME -vvv
(并查看 ProxyCommand 是否有效)。
我在https://github.com/martinwang2002/gcp-vscode-server中有这个,具有在 ssh 连接上启动并在不活动时停止的功能。
归档时间: |
|
查看次数: |
6492 次 |
最近记录: |