配置交互式串行控制台
裸金属解决方案提供用于访问裸金属解决方案服务器的交互式串行控制台。您可以直接在串行控制台中运行命令并响应提示。您可以使用串行控制台来执行配置和问题排查任务。裸金属解决方案服务器使用第一个串行端口(端口 1)作为串行控制台。
只有具有 TS54
(43.45.00.002
) 固件的服务器支持交互式串行控制台。在开始之前,请务必将服务器升级到 TS54
固件。请参阅准备工作。
超过 30 天的交互式串行控制台连接可能会强制断开连接。
本文档介绍如何在服务器上启用和停用交互式串行控制台访问权限。
准备工作
启用 Bare Metal Solution API。请参阅设置 Google Cloud 项目以使用 Bare Metal Solution API。
向用户授予相应的 Identity and Access Management (IAM) 角色。如需执行本文档中的所有任务,您必须具有以下角色之一:
roles/baremetalsolution.admin
roles/baremetalsolution.editor
验证您是否拥有所需的固件版本:
TS54
(43.45.00.002
) 或更高版本。请按照以下步骤操作:在裸金属解决方案服务器上,运行以下命令:
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
如果 BIOS 版本低于
43.45.00.002
,请升级服务器的固件。如需升级帮助,请与客户服务联系。
确保操作系统中的 GRand Unified Bootloader (GRUB) 文件具有正确的配置,以支持串行控制台。请按照以下步骤操作:
- 在
/etc/default
目录中找到 GRUB 配置文件。 验证 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 配置文件访问串行控制台。
如果 GRUB 配置文件没有这些设置,请手动添加。
运行
grub-mkconfig
命令以处理更改。如需了解详情,请参阅 GRUB 文档。重新启动服务器。
- 在
启用交互式串行控制台访问
如需启用和访问交互式串行控制台,请按以下步骤操作:
启用对交互式串行控制台的访问权限
在使用交互式串行控制台之前,您必须在服务器上启用对它的访问权限。
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 密钥密码。根据需要,按 Enter
或 Return
键可以访问交互式串行控制台。
断开与交互式串行控制台的连接
如需断开与串行控制台的连接,请按以下步骤操作:
- 按
ENTER
或RETURN
键。 - 输入
~.
(即依次输入波浪号和英文句点)。
管理 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:服务器的名称。