配置交互式串行控制台

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

只有具有 TS54 (43.45.00.002) 固件的服务器支持交互式串行控制台。在开始之前,请务必将服务器升级到 TS54 固件。请参阅准备工作

超过 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) 或更高版本。请按照以下步骤操作:

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

      sudo dmidecode | more
      

      如果成功,则输出会显示 43.45.00.002 或更高版本的 BIOS 版本,如以下示例所示:

      Getting SMBIOS data from sysfs.
      SMBIOS 3.0.0 present.
      Table at 0x69402000.
      
      Handle 0x0000, DMI type 0, 24 bytes
      BIOS Information
            Vendor: BULL
            Version: BIOS_PUR043.45.00.002
            Release Date: 03/11/2022
            Address: 0xE0000
            Runtime Size: 128 kB
            ROM Size: 16 MB
      
    2. 如果 BIOS 版本低于 43.45.00.002,请升级服务器的固件。如需升级帮助,请与客户服务联系。

  4. 确保操作系统中的 GRand Unified Bootloader (GRUB) 文件具有正确的配置,以支持串行控制台。请按照以下步骤操作:

    1. /etc/default 目录中找到 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. 输入 ~.(即依次输入波浪号和英文句点)。

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