使用 VNC 或串行控制台访问虚拟服务器实例
您可以通过使用 IBM Cloud UI,API 请求或 IBM Cloud 命令行界面 (CLI) 连接到 VNC 或串行控制台来访问 IBM Cloud 虚拟服务器实例。 控制台服务是一种快速简便的方法,可供您在不使用安全 Shell 的情况下与实例进行交互。
仅适用于使用TDX保密计算的 z/OS 虚拟服务器和虚拟服务器实例:不支持将 z/OS 或TDX保密计算虚拟服务器实例连接到VNC控制台。
它适用于发生引导故障或内核崩溃的情况,尤其是在使用定制映像时。 发生这些情况时,您可以使用控制台服务来检查问题。
VNC 控制台提供图形用户界面,并接受鼠标和键盘输入。 串行控制台提供了一个基于文本的控制台,该控制台接受键盘输入。
您可以使用控制台来访问操作系统装入和引导过程,例如 GNU GRand Unified Bootloader (GRUB)。
可以使用任何 受支持的浏览器 打开控制台。
准备工作
-
要连接到控制台,需要在 IBM Cloud® Identity and Access Management (IAM) 中为虚拟服务器实例分配
Operator
(或更高版本)和Console Administrator
角色。Console Administrator
角色不会自动应用。 如果您是账户管理员,还需要自行分配Console Administrator
角色才能使用此功能。要检查是否为您分配了必需角色,请转至 IBM Cloud 控制台中的“IAM 用户”页面,然后在 用户下选择您的帐户,然后选择 访问策略。 确保您看到将
Operator
(或更高版本) 角色和VirtualServerConsoleAdmin
角色分配给目标虚拟服务器实例的 资源属性 的访问策略。 否则,您需要联系帐户管理员,以使用以下步骤为您分配角色:- 转至 IBM Cloud 控制台中的“IAM 用户”页面,然后选择目标用户。
- 单击 访问选项卡,然后滚动到 访问策略。
- 单击分配访问权。
- 滚动到 创建策略 部分。
- 在 Service 部分,选择 VPC 基础架构服务。 然后,单击下一步。
- 在 Resources 部分,选择 All resources。
- 在角色和操作中,选择以下服务访问权限:
- 控制台管理员
- 然后,选择以下平台接入之一:
- 运算符
- 编辑者
- 管理员
- 单击下一步。
- 可选择添加条件。
- 点击回顾。
- 单击添加。
- 查看 访问权摘要 侧窗格,然后单击 分配。
有关 IAM 角色的更多信息,请参阅 IAM 入门。
-
IBM Cloud 提供的映像通常没有密码。 要使用控制台成功访问实例,您可能需要为 Linux 映像创建密码,或者提前检索 Windows 映像的密码。
-
对于 Linux 映像,连接到 连接到 Linux 实例 之后的实例。 在实例上,使用以下命令创建本地密码:
sudo passwd $(whoami)
-
对于 Windows 映像,请在 连接到 Windows 实例 之后获取密码。
-
对于 z/OS 映像,请在 连接到 z/OS 实例 之后获取密码。
-
对于串行控制台,您可以使用 -a root
标志将 getty
配置为在没有密码的情况下自动登录。
要对定制 Linux 映像启用串行控制台服务,请确保参数 console=ttyS0
在内核命令行上存在。 有关更多信息,请参阅 创建 Linux 定制映像 中的 步骤 1-从 qcow2 或 VHD 格式的单个映像文件开始。
使用 IBM Cloud UI 连接到控制台
遵循以下步骤以使用 IBM Cloud UI 连接到控制台。
- 在 IBM Cloud 控制台,转到 导航菜单 图标
> 基础设施
> 计算 > 虚拟服务器实例。
- 在 VPC 的虚拟服务器实例 列表中,单击需要访问的实例的溢出按钮,然后单击 打开 VNC 控制台 或 打开串行控制台。 或者,在实例详细信息页面上,单击右上角的 操作,然后单击 打开 VNC 控制台 或 打开串行控制台。
- (仅适用于串行控制台) 如果正在使用串行控制台,那么系统会提示您确认是否强制打开会话。 此操作将断开其他用户的会话。
- 输入凭证并遵循提示以登录到实例。
您可以通过单击控制台窗口右上角的 关闭实例 或 重新引导实例 来停止或重新启动实例。
使用 API 连接到控制台
在可以使用 API 请求连接到 VNC 或串行控制台之前,需要获取 IAM 令牌,将端点存储为变量,并验证您是否有权访问 VPC API 服务。 有关更多信息,请参阅 API 先决条件。
使用 API 连接到 VNC 控制台
-
为实例创建控制台访问令牌。 在有效内容中指定
"console_type":"VNC"
。curl -X POST \ "$vpc_api_endpoint/v1/instances/$instance_id/console_access_token?version=2021-01-26&generation=2" \ -H "Authorization: $iam_token" \ -d '{ "console_type": "vnc" }'
访问令牌将在 3 分钟后无效。
-
在响应中保存 "href" 的值。
-
在浏览器中打开 noVNC 门户网站。
-
单击 设置 并展开 高级> WebSocket。
-
选中加密,将第 2 步中保存的URL API 端点部分粘贴到 Host:,不要包含 "wss://",将端口设置为 "443",将第 2 步中保存的URL 路径部分粘贴到 Path。
- 示例 API 端点:
us-south.iaas.cloud.ibm.com
- 示例路径:
v1/instances/<instance_id>/console?access_token=<access_token>&version=2020-12-06&generation=2
- 示例 API 端点:
-
然后,单击连接。
-
登录实例。
使用 API 连接到串行控制台
-
为实例创建控制台访问令牌,在有效内容中指定
"console_type": "serial"
和"force": true
。curl -X POST \ "$vpc_api_endpoint/v1/instances/$instance_id/console_access_token?version=2020-01-26&generation=2" \ -H "Authorization: $token" \ -d '{ "console_type":"serial", "force": true }'
通过指定
"force"
到true
,您可以连接到串行控制台,即使控制台由其他用户使用也是如此。 缺省值为false
,这表示如果正在使用控制台,那么无法建立连接。 -
在响应中保存 "href" 的值。
-
使用URL 启动串行控制台程序。
如果使用 websocat,请在命令中指定
--binary
标志。 例如,websocat --binary "wss://us-south.iaas.cloud.ibm.com/v1/instances/<instance_id>/console?access_token=<access_token>&version=2020-12-06&generation=2"
-
输入凭证并遵循提示以登录到实例。
使用 CLI 连接到控制台
确保通过遵循 CLI 先决条件 来设置 CLI 环境。
-
运行以下命令以连接到控制台:
ibmcloud is instance-console $instance_id [-q, --quiet]
该命令默认打开串行控制台。 要打开 VNC 控制台,请在命令中添加 "
[--vnc]
标记,以获取控制台的URL。 -
根据您正在使用的控制台,执行下列其中一个步骤:
- 对于 VNC 控制台,请遵循 步骤 2 到 使用 API 连接到 VNC 控制台 中的 步骤 7。
- 对于串行控制台,请输入凭证并遵循提示以登录到实例。
与控制台断开连接
使用完控制台后,可以通过关闭终端或浏览器来断开与控制台的连接。
有关控制台服务的说明
-
控制台会话将在 10 分钟的空闲时间后到期。 它将在 60 分钟后关闭,而不考虑任何活动。
某些操作系统在控制台上具有闪烁的光标,例如 Ubuntu 18.04。 使用 VNC 控制台访问使用此类操作系统的实例时,闪烁的光标会导致控制台会话在空闲 10 分钟后保持活动状态。 无论活动如何,控制台会话仍将在 60 分钟后关闭。
-
如果实例电源已关闭,那么控制台将断开连接。 在实例再次启动之前,无法重新建立连接。
-
重新启动,重置或不会导致重新调度实例的任何其他操作都会维护控制台连接。
-
每个实例的活动 VNC 控制台数限制为 2。 每个实例的活动串行控制台数限制为 1。
-
有关使用串行控制台对Linux虚拟服务器实例进行故障排除的信息,请参阅 如何使用Linux SysRq密钥从串行控制台对Linux虚拟服务器实例进行故障排除?