结果是我的组织禁用了基于浏览器的 SSH 客户端和基于浏览器的 gcloud 客户端,这就是我无法访问 VM 的原因。给我的原因是,为了允许基于浏览器的 SSH,必须将虚拟机暴露给整个网络,因为谷歌没有提供他们用于基于浏览器的 SSH 的 IP 列表。
因此,可以先使用 GCP Web 控制台上传一个人的 SSH 密钥,然后通过一个人的本地 SSH 客户端 SSH 到 GCP 虚拟机。有关如何将本地 SSH 客户端与 GCP 一起使用的文档,请参阅https://cloud.google.com/compute/docs/instances/connecting-advanced#linux-macos ( mirror )。
由于文档解析起来有点繁琐,以下是我在本地 Ubuntu 18.04 LTS x64 上运行的命令,用于上传我的 SSH 密钥并连接到 VM:
如果您还没有安装gcloud
:
# https://cloud.google.com/sdk/docs/install#linux (<- go there to get the latest gcloud URL to download via curl):
sudo apt-get install -y curl
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-310.0.0-linux-x86_64.tar.gz
tar -xvf google-cloud-sdk-310.0.0-linux-x86_64.tar.gz./google-cloud-sdk/install.sh
./google-cloud-sdk/bin/gcloud init
一旦gcloud
安装:
# Connect to gcloud
gcloud auth login
# Retrieve one's GCP "username"
gcloud compute os-login describe-profile
# The output will be "name: '[some large number, which is the username]'"
# Create a new SSH key
ssh-keygen -t rsa -f ~/.ssh/gcp001 -C USERNAME
chmod 400 ~/.ssh/gcp001
# if you want to view the public key: nano ~/.ssh/gcp001.pub
gcloud compute os-login ssh-keys add --key-file ~/.ssh/gcp001.pub
gcloud compute ssh --project PROJECT_ID --zone ZONE VM_NAME
# Note that PROJECT_ID can be viewed when running `gcloud auth login`,
# which will output "Your current project has been set to: [PROJECT_ID]".