配置交互式串行控制台

裸金属解决方案提供了一个交互式串行控制台,用于访问您的 裸金属解决方案服务器。您可以通过串行控制台直接运行命令并响应提示 。您可以使用串行控制台执行配置 和问题排查任务。裸金属解决方案服务器使用第一个串行端口 (端口 1)作为串行控制台。

交互式串行控制台仅在以下服务器上受支持:

  • 固件版本为 TS54 (43.45.00.002) 或 更高版本的通用服务器。
  • 固件版本为 3.50.58 或更高版本的内存优化型服务器。

请务必先将服务器升级到最新固件,然后再开始。请参阅 准备工作

超过 30 天的交互式串行控制台连接可能会被 强制断开。

本文档介绍了如何在服务器上启用和停用交互式串行控制台 访问权限。

准备工作

  1. 启用 Bare Metal Solution API。请参阅设置项目以 Google Cloud 使用 Bare Metal Solution API

  2. 向用户授予适当的 Identity and Access Management (IAM) 角色。 如需执行本文档中的所有任务,您必须拥有以下任一 角色:

    • roles/baremetalsolution.admin
    • roles/baremetalsolution.editor
  3. 验证您是否拥有所需的固件版本:

    • 对于通用服务器,为 TS54 (43.45.00.002) 或更高版本。
    • 对于内存优化型服务器,为 3.50.58 或更高版本。

    请按照以下步骤操作:

    1. 在裸金属解决方案服务器上,运行以下命令:

      sudo dmidecode -s bios-version
      

      如果成功,输出会显示所需的 BIOS 版本或更高版本。例如,对于通用服务器,输出会显示 BIOS 版本为 43.45.00.002 或更高版本:

      Version: BIOS_PUR043.45.00.002
      
    2. 如果 BIOS 版本低于所需的固件,请升级服务器的 固件。请与 客户服务团队联系,以获取升级 方面的帮助。

  4. 如果您的裸金属解决方案服务器是在 2022 年 6 月之前预配的,则 内核启动参数可能缺少交互式串行控制台所需的配置。相反,如果是在 2022 年 6 月之后预配的,则所需配置可能已集成到你的 操作系统映像中。不过,操作系统补丁或 企业专用政策强制执行可能会更改默认内核 启动参数。无论如何,我们建议您验证 交互式串行控制台所需的操作系统配置是否可用。

    如需确保您的操作系统具有交互式 串行控制台所需的配置,请按照以下步骤操作:

    1. /etc/default 目录中找到 GRand Unified Bootloader (GRUB) 配置文件。
    2. 验证 GRUB 配置文件是否包含以下设置:

      GRUB_CMDLINE_LINUX="(append to the existing value) console=tty0 console=ttyS0,115200"
      GRUB_TERMINAL_OUTPUT="console serial"
      GRUB_TERMINAL="console serial"
      GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
      

      如果该文件包含这些设置,请跳过其余说明。您可以使用 GRUB 配置文件访问串行控制台。

    3. 如果 GRUB 配置文件没有这些设置,请手动添加 。

    4. 运行 grub-mkconfig 命令以处理更改。如需了解详情,请参阅 GRUB 文档

    5. 重启服务器。

启用交互式串行控制台访问权限

如需启用和访问交互式串行控制台,请按照以下步骤操作:

  1. 启用对交互式串行控制台的访问权限
  2. 生成 SSH 密钥
  3. 注册 SSH 密钥
  4. 连接到服务器

启用对交互式串行控制台的访问权限

在使用交互式串行控制台之前,您必须在 服务器上启用对它的访问权限。

gcloud

如需启用对交互式串行控制台的访问权限,请运行 gcloud bms instances enable-serial-console 命令。

gcloud bms instances enable-serial-console SERVER_NAME --project=PROJECT_ID --region=REGION

请替换以下内容:

  • SERVER_NAME:服务器的名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:服务器所在的区域。

API

如需启用对交互式串行控制台的访问权限,请输入项目 ID、 区域和服务器名称,然后发出以下 curl 命令。

curl -v \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
-H "Content-Type: application/json" \
"https://baremetalsolution.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/SERVER_NAME:enableInteractiveSerialConsole"

请替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • REGION:服务器所在的区域。
  • SERVER_NAME:服务器的名称。

生成 SSH 密钥对

生成 SSH 密钥对,以对您对串行控制台的访问进行身份验证。此操作只需要针对每个项目执行一次。

从跳转主机虚拟机实例或其他 连接到互联网的终端运行 ssh-keygen 命令,以创建新的 SSH 密钥对。

  ssh-keygen -b 4096 -f SSH_KEY_ID -N 'PASSPHRASE' -t rsa
  

请替换以下内容:

  • SSH_KEY_ID:用于生成 公钥和私钥的 SSH 密钥文件的根名称。
  • PASSPHRASE:通过 串行控制台访问服务器时使用的密码。

ssh-keygen 命令会将您的私钥保存到主目录中名为 SSH_KEY_ID 的文件,并将公钥保存到名为 SSH_KEY_ID.pub 的文件。

注册 SSH 密钥

如需对您对串行控制台的访问进行身份验证,请在您的 项目中注册 SSH 密钥。此操作只需要针对每个密钥对执行一次。

gcloud

如需注册 SSH 密钥,请运行 gcloud bms ssh-keys add 命令。

gcloud bms ssh-keys add SSH_KEY_ID --project=PROJECT_ID --key-file=SSH_KEY_ID.pub

请替换以下内容:

  • SSH_KEY_ID:用于生成 公钥和私钥的 SSH 密钥文件的根名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:服务器所在的区域。
  • SERVER_NAME:服务器的名称。

API

如需注册 SSH 密钥,请输入项目 ID、SSH 密钥 ID 和公钥 文件名,然后发出以下 curl 命令。

curl -v \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
-H "Content-Type: application/json" \
"https://baremetalsolution.googleapis.com/v2/projects/PROJECT_ID/locations/global/sshKeys?ssh_key_id=SSH_KEY_ID" \
--data "{\"public_key\": \"$(cat SSH_KEY_ID.pub)\"}"

请替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • SSH_KEY_ID:用于生成 公钥和私钥的 SSH 密钥文件的根名称。

如需管理项目中的 SSH 密钥,请参阅管理 SSH 密钥

连接到服务器

在连接到交互式串行控制台之前,您可以选择 使用串行控制台的主机密钥验证连接 以帮助确保您免受冒充或 中间人攻击。

使用 SSH 访问交互式串行控制台。运行以下命令:

  ssh -i SSH_KEY_ID -p 9600 PROJECT_ID.REGION.SERVER_NAME.USERNAME.bms=true@\REGION\-ssh-serialport.googleapis.com
  

请替换以下内容:

  • SSH_KEY_ID:用于生成 公钥和私钥的 SSH 密钥文件的根名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:服务器所在的区域。
  • SERVER_NAME:服务器的名称。
  • USERNAME:您用于通过串行控制台访问裸金属解决方案 服务器的用户名。

出现提示时,输入您之前配置的 SSH 密钥密码。根据需要, 按 EnterReturn 键以访问交互式串行 控制台。

与交互式串行控制台断开连接

如需与串行控制台断开连接,请按照以下步骤操作:

  1. ENTERRETURN 键。
  2. 输入 ~.(即依次输入波浪号和英文句点)。

管理 SSH 密钥

SSH 密钥按项目存储。您可以通过以下方式管理 SSH 密钥:

列出 SSH 密钥

您可以列出在项目中注册的 SSH 公钥。

gcloud

如需列出 SSH 公钥,请运行 gcloud bms ssh-keys list 命令。

gcloud bms ssh-keys list --project=PROJECT_ID

请替换以下内容:

  • PROJECT_ID:您的项目 ID。

API

如需列出 SSH 公钥,请输入项目 ID,然后发出以下 curl 命令。

curl -v \
-X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
-H "Content-Type: application/json" \
"https://baremetalsolution.googleapis.com/v2/projects/PROJECT_ID/locations/global/sshKeys"

请替换以下内容:

  • PROJECT_ID:您的项目 ID。

删除 SSH 密钥

您可以从项目的授权密钥列表中删除 SSH 密钥。

gcloud

如需删除 SSH 公钥,请运行 gcloud bms ssh-keys remove 命令。

gcloud bms ssh-keys remove SSH_KEY_ID --project=PROJECT_ID

请替换以下内容:

  • SSH_KEY_ID:用于生成 公钥和私钥的 SSH 密钥文件的根名称。
  • PROJECT_ID:您的项目 ID。

API

如需删除 SSH 公钥,请输入项目 ID 和 SSH 密钥 ID,然后发出 以下 curl 命令。

curl -v \
-X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
-H "Content-Type: application/json" \
"https://baremetalsolution.googleapis.com/v2/projects/PROJECT_ID/locations/global/sshKeys/SSH_KEY_ID"

请替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • SSH_KEY_ID:用于生成 公钥和私钥的 SSH 密钥文件的根名称。

停用交互式串行控制台访问权限

请按照以下说明停用服务器上的交互式串行控制台访问权限 。

gcloud

如需停用交互式串行控制台,请运行 gcloud bms instances disable-serial-console 命令。

gcloud bms instances disable-serial-console SERVER_NAME --project=PROJECT_ID --region=REGION

请替换以下内容:

  • SERVER_NAME:服务器的名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:服务器所在的区域。

API

如需停用交互式串行控制台,请输入项目 ID、区域、 和服务器名称,然后发出以下 curl 命令。

curl -v \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
-H "Content-Type: application/json" \
"https://baremetalsolution.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/SERVER_NAME:disableInteractiveSerialConsole"

请替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • REGION:服务器所在的区域。
  • SERVER_NAME:服务器的名称。