配置交互式串行控制台

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

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

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

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

      sudo dmidecode -s bios-version
      

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

      Version: BIOS_PUR043.45.00.002
      
    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. 输入 ~.(即依次输入波浪号和英文句点)。

对于裸金属解决方案上的 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:服务器的名称。