Compute Engine 使用基于密钥的 SSH 身份验证建立与所有 Linux 虚拟机 (VM) 实例的连接。您可以选择为 Windows 虚拟机启用 SSH。默认情况下,系统不会为 Linux 虚拟机上的本地用户配置密码。
您必须先进行一些配置,然后才能连接到虚拟机。如果您使用 Google Cloud 控制台或 Google Cloud CLI 连接到虚拟机,Compute Engine 会代表您执行这些配置。
元数据管理的 SSH 连接
Compute Engine 使用自定义项目和/或实例元数据来配置 SSH 密钥和管理 SSH 访问权限。点击各个标签页可详细了解使用 Google Cloud 控制台、gcloud CLI 或第三方工具连接到虚拟机时,Compute Engine 在允许 SSH 连接之前执行的配置。如果您不使用 Google Cloud 控制台或 gcloud CLI 连接虚拟机,则必须自行执行一些配置。
控制台
- 使用 Google Cloud 控制台中的 SSH 按钮来连接到虚拟机。
- Compute Engine 按照以下配置设置用户名并创建临时 SSH 密钥对:
- 您的用户名将设置为您的 Google 账号中的用户名。例如,如果与您的 Google 账号关联的电子邮件地址是
cloudysanfrancisco@gmail.com
,则您的用户名为cloudysanfrancisco
。 - 您的 SSH 公钥和私钥存储在浏览器会话中。
- SSH 密钥的有效期为 5 分钟。在 Compute Engine 创建密钥 5 分钟后,您无法再使用该 SSH 密钥连接到虚拟机。
- 您的用户名将设置为您的 Google 账号中的用户名。例如,如果与您的 Google 账号关联的电子邮件地址是
- Compute Engine 将 SSH 公钥和用户名上传到元数据。
- Compute Engine 从元数据中检索 SSH 密钥和用户名,使用该用户名创建一个用户账号,并在 Linux 虚拟机上将公钥存储在虚拟机上您用户的
~/.ssh/authorized_keys
文件中。在 Windows 虚拟机上,Compute Engine 不会将公钥存储在虚拟机上。 - Compute Engine 允许连接。
gcloud
- 使用
gcloud compute ssh
命令连接到虚拟机。 - Compute Engine 按照以下配置设置用户名并创建永久 SSH 密钥对:
- 您的用户名设置为本地机器中的用户名。
- 您的 SSH 公钥存储在项目元数据中。如果 Compute Engine 无法将 SSH 密钥存储在项目元数据中(例如,由于
block-project-ssh-keys
设置为TRUE
),则 Compute Engine 会将 SSH 密钥存储在实例元数据中。 - 您的 SSH 私钥存储在本地机器上。
- SSH 密钥没有到期时间。除非您配置新密钥,否则这一密钥将用于您以后发起的所有 SSH 连接。
- 您的用户名设置为本地机器中的用户名。
- Compute Engine 将 SSH 公钥和用户名上传到元数据。
- Compute Engine 从元数据中检索 SSH 密钥和用户名,使用该用户名创建一个用户账号,并在 Linux 虚拟机上将公钥存储在虚拟机上您用户的
~/.ssh/authorized_keys
文件中。在 Windows 虚拟机上,Compute Engine 不会将公钥存储在虚拟机上。 - Compute Engine 允许连接。
第三方工具
- 您创建 SSH 密钥对和用户名。如需了解详情,请参阅创建 SSH 密钥。
- 您将公钥和用户名上传到元数据。如需了解详情,请参阅将 SSH 密钥添加到使用基于元数据的 SSH 密钥的虚拟机。
- 您连接到虚拟机。
- Compute Engine 从元数据中检索 SSH 密钥和用户名,使用该用户名创建一个用户账号,并在 Linux 虚拟机上将公钥存储在虚拟机上您用户的
~/.ssh/authorized_keys
文件中。在 Windows 虚拟机上,Compute Engine 不会将公钥存储在虚拟机上。 - Compute Engine 允许连接。
后续步骤
- 了解如何管理元数据中的 SSH 密钥。
- 了解如何连接到虚拟机。
- 如需查找诊断和解决失败的 SSH 连接问题的方法和工具,请参阅排查 SSH 问题。