连接到实例

本页面介绍连接到您的 Compute Engine Linux 实例和 Compute Engine Windows 实例的一些最常见的方法。

如需了解连接到您的实例的更多方法,请参阅以下内容:

在连接之前,请查看以下说明:

连接到 Linux 实例

如需通过 Google Cloud ConsoleSDK 中的 gcloud 命令行工具连接到 Linux 实例,请完成以下任一标签页中的步骤:

如果这些基本 SSH 选项都不太适合,您可能需要使用第三方工具连接到实例连接到没有外部 IP 地址的实例

控制台

  1. 在 GCP Console 中,转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 在虚拟机实例列表中,点击要连接到的实例行中的 SSH

    实例名称旁边的 SSH 按钮。

gcloud

使用 gcloud compute ssh 命令连接到您有权访问的实例。

gcloud compute ssh --project [PROJECT_ID] --zone [ZONE] [INSTANCE_NAME]

其中:

  • [PROJECT_ID] 是包含实例的项目的 ID。
  • [ZONE] 是实例所在地区的名称。
  • [INSTANCE_NAME] 是实例的名称。

如果您已为 gcloud 命令行工具设置默认属性,则可以省略此命令中的 --project--zone 标志。例如:

gcloud compute ssh [INSTANCE_NAME]

连接后,请使用终端在 Linux 实例上运行命令。完成后,请使用 exit 命令断开与实例的连接。

SSH 密钥的位置

第一次连接后,Compute Engine 会为您生成 SSH 密钥对,并将其存储在以下某个位置中:

  • 默认情况下,Compute Engine 会将生成的密钥添加到项目元数据或实例元数据中。
  • 如果您的帐号配置为使用 OS Login,Compute Engine 会将生成的密钥与您的用户帐号一起存储。

如果您以本文档中介绍的方式进行连接,则不必知道 SSH 密钥的存储位置,但如果您想要通过使用高级方法连接到实例中介绍的替代或高级连接方法进行连接,则可能需要知道 SSH 密钥的存储位置。

存储主机密钥

主机密钥是标识特定主机或机器的密钥对。 连接到远程主机时,主机密钥用于验证您是否正在连接到目标机器。

如果您使用 gcloud compute ssh 连接到 Linux 实例,则可以通过将主机密钥存储为客机特性来增加一层安全性。

将 SSH 主机密钥存储为客机特性有助于防范中间人 (MITM) 攻击等漏洞,从而提高连接的安全性。 虚拟机实例初次启动时,如果客机特性已启用,则 Compute Engine 会将生成的主机密钥存储为客机特性。然后,Compute Engine 会使用虚拟机实例初次启动期间存储的这些主机密钥验证与该实例的所有后续连接。

支持的操作系统

以下操作系统支持将主机密钥存储为客机特性:

  • Debian
  • Ubuntu
  • Red Hat Enterprise Linux (RHEL)
  • CentOS
  • SUSE Linux Enterprise Server (SLES)

主机密钥只能在虚拟机实例第一次启动时写入到客机特性。如需将主机密钥写入到客机特性,您必须在第一次启动虚拟机实例之前启用客机特性。

如需将主机密钥存储为客机特性,请完成以下步骤:

  1. 在第一次启动虚拟机实例之前,启用客机特性。您可以在实例创建期间启用选定虚拟机实例上的客机特性,也可以启用整个项目上的客机特性。如需启用客机特性,请参阅启用实例上的客机特性
  2. 使用 gcloud compute SSH 连接到您的实例。

    1. 确保您拥有最新版本的 gcloud 命令行工具。

      gcloud components update
      
    2. 连接到实例。

      gcloud compute ssh --project [PROJECT_ID] --zone [ZONE] [INSTANCE_NAME]
      

      其中:

      • [PROJECT_ID] 是包含实例的项目的 ID。
      • [ZONE] 是实例所在地区的名称。
      • [INSTANCE_NAME] 是实例的名称。

      如果您已为 gcloud 命令行工具设置默认属性,则可以省略此命令中的 --project--zone 标志。例如:

      gcloud compute ssh [INSTANCE_NAME]
      
    3. 查看启动消息。例如,Debian 操作系统可能会显示以下消息:

      Writing 3 keys to [YOUR_HOME_DIRECTORY]/.ssh/google_compute_known_hosts
      Linux host-key-2 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u3 (2019-06-16) x86_64
  3. 确认已存储主机密钥

确认主机密钥已存储为客机特性

如需确认主机密钥已存储为客机特性,请查看实例的串行端口或主机密钥值。

方式 1:查看串行端口

  1. 访问串行端口输出(请参阅查看串行端口输出)。
  2. 选择串行端口 1
  3. 搜索以下消息:

    INFO Wrote ssh-rsa host key to guest attributes
    

    如果您的映像使用受支持的操作系统,但您在虚拟机第一次启动之前未启用客机特性,则您可能会看到以下消息:

    Unable to write ssh-rsa host key to guest attributes
    

    这意味着主机密钥未存储为此实例的客机特性。如果要为计划创建的其他实例存储主机密钥,请确保在实例第一次启动之前启用客机特性。

方式 2:查看主机密钥值

您可以使用 gcloud 命令行工具验证 SSH 密钥已写入到客机特性。

 gcloud compute instances get-guest-attributes [INSTANCE_NAME] --query-path "hostkeys/" --zone [ZONE]

其中:

  • [ZONE] 是实例所在地区的名称。
  • [INSTANCE_NAME] 是实例的名称。

您的输出可能与以下内容类似:

NAMESPACE  KEY                  VALUE
hostkeys   ecdsa-sha2-nistp256  AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBJAGpTm
                                V3mFxBTHK1NIu9a7kVQWaHsZVaFUsqF8cLxQRQ+N96/Djiiuz1tucHQ8vBTJI=
hostkeys   ssh-ed25519          AAAAC3NzaC1lZDI1NTE5AAAAIM/WYBn3jIEW5t3BZumx0X/Htm61J6S9FcU8L
hostkeys   ssh-rsa              AAAAB3NzaC1yc2EAAAADAQABAAABAQDU3jReR/MoSttlWYfauW6qEqS2dhe5
                                Zdd3guYk2H7ZyxblNuP56nOl/IMuniVmsFa9v8W6MExViu6G5Cy4iIesot09
                                1hsgkG0U7sbWrXM10PQ8pnpI3B5arplCiEMhRtXy64rlW3Nx156bLdcxv5l+
                                7Unu4IviKlY43uqqwSyTv+V8q4ThpQ9dNbk1Gg838+KzazljzHahtbIaE1rm
                                I0L1lUqKiKLSLKuBgrI2Y/WSuqvqGEz+bMH7Ri4ht+7sAwykph6FbOgKqoBI
                                hVWBo38/Na/gEuvtmgULUwK+xy9zWg9k8k/Qtihc6El9GD9y

连接到 Windows 实例

您可以使用 Google Cloud Console 中的远程桌面协议 (RDP) 或通过图形界面连接到 Windows 实例。

远程桌面

在连接之前,请确保您已创建 Windows 实例密码,并且已准备好在以下步骤中输入该密码:

Chrome 远程桌面

在使用 Chrome 远程桌面进行连接之前,请确保满足以下前提条件:

  • 您的虚拟机实例具有公共 IP 地址。
  • 您的防火墙规则允许 TCP 入站流量使用端口 3389 从您客户端的公共 IP 地址流向该实例。

如需使用 Chrome 远程桌面进行连接,请执行以下操作:

  1. 使用 Chrome RDP for GCP 或远程桌面连接到实例(如需查看说明,请参阅其他标签页)。

  2. 在虚拟机上,下载并安装 Chrome

  3. 下载并安装 Chrome 远程桌面

  4. 按照该扩展程序提供的说明操作,将虚拟机实例设置为主机。

  5. 断开与实例的连接。

  6. 在您要使用 Chrome 远程桌面连接到虚拟机实例的机器上,下载并安装 Chrome 远程桌面

  7. 请务必使用您在安装 Chrome 远程桌面时在虚拟机实例上所用的 Google 帐号登录到 Chrome。

  8. 虚拟机实例应该会显示在您的远程设备列表中。点击该设备与其连接。

Chrome RDP for GCP

在使用 Chrome RDP for GCP 进行连接之前,请确保满足以下前提条件:

  • 您的虚拟机实例具有公共 IP 地址。
  • 您的防火墙规则允许 TCP 入站流量使用端口 3389 从您客户端的公共 IP 地址流向该实例。
  1. 安装 Chrome RDP for Google Cloud 扩展程序

  2. 转到 Cloud Console 中的“虚拟机实例”页面,并找到您要连接到的 Windows 实例。

    转到“虚拟机实例”页面

  3. 点击您要连接到的实例的 RDP 按钮。Chrome RDP 扩展程序随即打开。

  4. 输入网域、用户名和密码,然后点击确定进行连接。

    已设置好所需选项的实例创建窗口。

    如果实例没有配置网域,您可以将网域字段留空。

  5. 如果看到系统提示,请按继续接受证书。

远程桌面

在使用远程桌面客户端进行连接之前,请确保满足以下前提条件之一:

  • 您的虚拟机实例具有公共 IP 地址,并且您的防火墙规则允许 TCP 入站流量使用端口 3389 从您客户端的公共 IP 地址流向该实例。
  • 您的本地网络已通过 VPNCloud Interconnect 连接到您的 VPC,并且您的防火墙规则允许 TCP 入站流量使用端口 3389 从您客户端的专用 IP 地址流向该实例。

如需通过 Microsoft Windows 远程桌面进行连接,请执行以下操作:

  1. 通过“虚拟机实例”页面确定 Windows 实例的 IP 地址。

    • 如需通过互联网进行连接,请使用外部 IP 地址。
    • 如需使用 VPN 或 Cloud Interconnect 进行连接,请使用内部 IP 地址。

    转到“虚拟机实例”页面

    或者,通过在 gcloud 命令行工具中运行 instances list 命令来查找 IP 地址:

    gcloud compute instances list
    
  2. 在 Windows 机器上打开 Microsoft Windows 远程桌面连接。

    mstsc 连接窗口。

  3. 计算机字段中输入 IP 地址。点击连接

  4. 输入用户名和密码。然后,点击确定进行连接。

其他

您可以使用其他 RDP 客户端(例如为 Android、iOS、Mac 等开发的客户端)连接到 Windows 虚拟机实例。

在进行连接之前,请确保满足以下前提条件之一:

  • 您的虚拟机实例具有公共 IP 地址,并且您的防火墙规则允许 TCP 入站流量使用端口 3389 从您客户端的公共 IP 地址流向该实例。
  • 您的本地网络已通过 VPNCloud Interconnect 连接到您的 VPC,并且您的防火墙规则允许 TCP 入站流量使用端口 3389 从您客户端的专用 IP 地址流向该实例。

如需使用其他 RDP 客户端进行连接,请执行以下操作:

  1. 通过“虚拟机实例”页面确定 Windows 实例的 IP 地址。

    • 如需通过互联网进行连接,请使用外部 IP 地址。
    • 如需使用 VPN 或 Cloud Interconnect 进行连接,请使用内部 IP 地址。

    转到“虚拟机实例”页面

    或者,通过在 gcloud 命令行工具中运行 instances list 命令来查找 IP 地址:

    gcloud compute instances list
    
  2. 根据客户端的安装说明来安装支持的客户端。

  3. 使用您实例的 IP 地址进行连接,并使用您用于该实例的用户名和密码进行身份验证。

如需查看正式支持的客户端列表,请参阅 Microsoft 的远程桌面客户端文章。

如果您在使用 RDP 连接时遇到问题,请参阅 RDP 问题排查页面。

Special Administrative Console

本部分介绍如何使用交互式串行控制台连接到 Windows 实例的 Special Administrative Console (SAC)。如果您无法通过远程桌面连接到 Windows 实例,则可以使用 SAC 对其进行问题排查。

在连接之前,请确保您已创建 Windows 实例密码,并且已准备好输入该密码。

如需使用交互式串行控制台连接到 Windows 实例,请完成以下任一标签页中的步骤:

控制台

如需通过 Cloud Console 使用交互式串行控制台连接到 Windows 实例,请执行以下操作:

  1. 在 Cloud Console 中打开“虚拟机实例”页面,然后点击实例的名称。虚拟机实例详情页面随即打开。

    转到“虚拟机实例”页面

  2. 点击修改。在远程访问下,选中允许连接到串行端口。此操作将为该实例启用交互式串行控制台。

    修改实例详细信息屏幕设置。

    或者,如果您想要将这些设置应用于项目中的所有实例,请改为设置项目范围的自定义元数据

    如需详细了解如何更新实例元数据,请参阅存储和检索实例元数据

  3. 点击保存,然后返回页面顶部。

  4. 远程访问下,点击连接到串行控制台旁边的下拉列表,然后选择串行端口 2。Windows Special Administrative Console (SAC) 随即打开。

  5. SAC> 提示符处,运行 cmd 以创建新通道。SAC 会返回通道名称,例如 Cmd001

  6. 运行 ch -sn [CHANNEL_NAME],然后按任意键以连接到该通道。例如:

    SAC> cmd
    The Command Prompt session was successfully launched.
    SAC>
    EVENT:   A new channel has been created.  Use "ch -?" for channel help.
    Channel: Cmd0001
    SAC> ch -sn cmd0001
    Press any key to confirm connection to the channel.
    
  7. 输入实例的用户名、网域和密码进行连接。

gcloud

如需通过 gcloud 命令行工具使用交互式串行控制台连接到 Windows 实例,请执行以下操作:

  1. 如果您尚未下载并安装适合您本地操作系统的 Cloud SDK,请下载并安装。请参阅安装 Cloud SDK

  2. 启动 Cloud SDK。

  3. 运行以下命令将您的实例配置为允许连接到串行端口:

    gcloud compute instances add-metadata [INSTANCE_NAME]
    --metadata=serial-port-enable=1
    

    可选:如果您想要将这些设置应用于项目中的所有实例,请改为运行以下 Cloud SDK 命令:

    gcloud compute project-info add-metadata
    --metadata=serial-port-enable=1
    

    如需详细了解项目范围的自定义元数据,请参阅设置项目范围的自定义元数据

    如需详细了解如何更新元数据,请参阅更新实例元数据

  4. 运行以下 gcloud 命令进入交互式会话:

    gcloud compute connect-to-serial-port [INSTANCE_NAME] --port=2
    

    SAC 交互式会话。

  5. SAC> 提示符处,运行 cmd 以创建新通道。SAC 会返回通道名称,例如 Cmd001

  6. 运行 ch -sn [CHANNEL_NAME],然后按任意键以连接到该通道。例如:

    SAC> cmd
    The Command Prompt session was successfully launched.
    SAC>
    EVENT:   A new channel has been created.  Use "ch -?" for channel help.
    Channel: Cmd0001
    SAC> ch -sn cmd0001
    Press any key to confirm connection to the channel.
    
  7. 输入实例的用户名、网域和密码进行连接。

后续步骤