配置交互式串行控制台

裸金属解决方案提供交互式串行控制台,用于访问裸金属解决方案服务器。您可以直接在串行控制台中运行命令并响应提示。您可以使用串行控制台执行配置和问题排查任务。裸金属解决方案服务器使用第一个串行端口(端口 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 月之后预配的,则所需的配置可能已集成到您的操作系统映像中。不过,操作系统补丁或企业专用政策强制执行可能会更改默认的 kernel 启动参数。无论如何,我们都建议您验证交互式串行控制台所需的操作系统配置是否可用。

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

    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,请使用 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:服务器的名称。