配置交互式串行控制台

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

只有以下服务器支持交互式串行控制台:

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

请务必在开始之前将服务器升级到最新固件。请参阅准备工作

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

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

准备工作

  1. 启用 Bare Metal 解决方案 API。请参阅设置您的 Google Cloud 项目以使用 Bare Metal 解决方案 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@ssh-serialport.googleapis.com
  

请替换以下内容:

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

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

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

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

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

对于 SAP HANA on 裸金属解决方案,请使用 CTRL + ] q 断开与交互式串行控制台的连接。

管理 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:服务器的名称。