关于 SSH 连接

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 连接虚拟机,则必须自行执行一些配置。

控制台

  1. 使用 Google Cloud 控制台中的 SSH 按钮连接到虚拟机
  2. Compute Engine 按照以下配置设置用户名并创建临时 SSH 密钥对:
    • 您的用户名将设置为您的 Google 账号中的用户名。例如,如果与您的 Google 账号关联的电子邮件地址是 cloudysanfrancisco@gmail.com,则您的用户名为 cloudysanfrancisco
    • 您的 SSH 公钥和私钥存储在浏览器会话中。
    • SSH 密钥的有效期为 5 分钟。在 Compute Engine 创建密钥 5 分钟后,您无法再使用该 SSH 密钥连接到虚拟机。
  3. Compute Engine 将 SSH 公钥和用户名上传到元数据。
  4. Compute Engine 从元数据中检索 SSH 密钥和用户名,使用该用户名创建一个用户账号,并在 Linux 虚拟机上将公钥存储在虚拟机上您用户的 ~/.ssh/authorized_keys 文件中。在 Windows 虚拟机上,Compute Engine 不会将公钥存储在虚拟机上。
  5. Compute Engine 允许连接。

gcloud

  1. 使用 gcloud compute ssh 命令连接到虚拟机
  2. Compute Engine 按照以下配置设置用户名并创建永久 SSH 密钥对:
    • 您的用户名设置为本地机器中的用户名。
    • 您的 SSH 公钥存储在项目元数据中。如果 Compute Engine 无法将 SSH 密钥存储在项目元数据中(例如,由于 block-project-ssh-keys 设置为 TRUE),则 Compute Engine 会将 SSH 密钥存储在实例元数据中。
    • 您的 SSH 私钥存储在本地机器上。
    • SSH 密钥没有到期时间。除非您配置新密钥,否则这一密钥将用于您以后发起的所有 SSH 连接。
  3. Compute Engine 将 SSH 公钥和用户名上传到元数据。
  4. Compute Engine 从元数据中检索 SSH 密钥和用户名,使用该用户名创建一个用户账号,并在 Linux 虚拟机上将公钥存储在虚拟机上您用户的 ~/.ssh/authorized_keys 文件中。在 Windows 虚拟机上,Compute Engine 不会将公钥存储在虚拟机上。
  5. Compute Engine 允许连接。

第三方工具

  1. 您创建 SSH 密钥对和用户名。如需了解详情,请参阅创建 SSH 密钥
  2. 您将公钥和用户名上传到元数据。如需了解详情,请参阅将 SSH 密钥添加到使用基于元数据的 SSH 密钥的虚拟机
  3. 您连接到虚拟机。
  4. Compute Engine 从元数据中检索 SSH 密钥和用户名,使用该用户名创建一个用户账号,并在 Linux 虚拟机上将公钥存储在虚拟机上您用户的 ~/.ssh/authorized_keys 文件中。在 Windows 虚拟机上,Compute Engine 不会将公钥存储在虚拟机上。
  5. Compute Engine 允许连接。

后续步骤