你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
虚拟机控制台服务简介
虚拟机(VM)控制台服务提供对操作员 Nexus 实例中托管的 VM 的托管访问权限。 它依赖于Azure 专用链接服务(PLS)在用户的网络与 Azure 操作员 Nexus 群集管理器的专用网络之间建立专用网络连接。
有关支持与操作员 Nexus 实例的专用连接的网络资源的详细信息,请参阅Azure 专用链接简介。
本文档提供了有关如何使用 VM 控制台服务在操作员 Nexus 实例中与虚拟机建立会话的引导说明。
本指南可帮助你:
- 在网络与群集管理器的专用网络之间建立安全专用网络连接。
- 使用
az networkcloud virtualmachine console
CLI 命令在工作负荷/租户资源组中创建控制台资源。 - 启动 SSH 会话以连接到虚拟机的控制台。
注意
为了避免将 --subscription
参数传递给每个 Azure CLI 命令,请执行以下命令:
az account set --subscription "your-subscription-ID"
开始之前
- 安装最新版本的 相应 CLI 扩展。
设置变量
为了帮助设置环境以访问虚拟机,请定义本指南中各种命令使用的这些环境变量。
注意
这些环境变量值不反映实际部署,用户必须更改它们以匹配其环境。
应注意,以下部分中的第一组变量适用于 群集管理器 而不是群集。
# CM_HOSTED_RESOURCES_RESOURCE_GROUP: Cluster Manager resource group name
export CM_HOSTED_RESOURCES_RESOURCE_GROUP="my-contoso-console-rg"
# CM_EXTENDED_LOCATION: Cluster Manager Extended Location, can be retrieved but you will need access rights to execute certain Azure CLI commands
export CM_EXTENDED_LOCATION="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ExtendedLocation/customLocations/clusterManagerExtendedLocationName"
# VIRTUAL_MACHINE_NAME: Virtual Machine name you want to access through VM Console service
export VIRTUAL_MACHINE_NAME="my-undercloud-vm"
# CONSOLE_PUBLIC_KEY: Public Key matching Private Key to be used when establish `ssh` session, e.g., `ssh -i $HOME/.ssh/id-rsa`
export CONSOLE_PUBLIC_KEY="xxxx-xxxx-xxxxxx-xxxx"
# CONSOLE_EXPIRATION_TIME: Expiration date and time (RFC3339 format) for any `ssh` session with a virtual machine.
export CONSOLE_EXPIRATION_TIME="2023-06-01T01:27:03.008Z"
# PRIVATE_ENDPOINT_RG: Resource group name that Private Endpoint will be created on
export PRIVATE_ENDPOINT_RG="my-work-env-rg"
# PRIVATE_ENDPOINT_NAME: Private Endpoint's name you choose
export PRIVATE_ENDPOINT_NAME="my-work-env-ple"
# PRIVATE_ENDPOINT_CONNECTION_NAME: PLE/PLS connection name you choose
export PRIVATE_ENDPOINT_CONNECTION_NAME="my-contoso-ple-pls-connection"
# PRIVATE_ENDPOINT_REGION: Location where Private Endpoint will be created
export PRIVATE_ENDPOINT_REGION="eastus"
# PRIVATE_ENDPOINT_VNET: Virtual Network to be used by the Private Endpoint
export PRIVATE_ENDPOINT_VNET="my-work-env-ple-vnet"
# PRIVATE_ENDPOINT_SUBNET: Subnetwork to be used by the Private Endpoint
export PRIVATE_ENDPOINT_SUBNET="my-work-env-ple-subnet"
创建控制台资源
控制台资源提供有关 VM 的信息,例如 VM 名称、公钥、SSH 会话的到期日期等。
本部分提供分步指南,帮助你使用 Azure CLI 命令创建控制台资源。
若要在群集管理器中创建 控制台 资源,需要收集一些信息,例如资源组(CM_HOSTED_RESOURCES_RESOURCE_GROUP)和自定义位置(CM_EXTENDED_LOCATION)。 必须提供资源组,但如果有权执行下面列出的命令,则可以检索自定义位置。
export cluster_manager_resource_id=$(az resource list -g ${CM_HOSTED_RESOURCES_RESOURCE_GROUP} --query "[?type=='Microsoft.NetworkCloud/clusterManagers'].id" --output tsv) export CM_EXTENDED_LOCATION=$(az resource show --ids $cluster_manager_resource_id --query "properties.managerExtendedLocation.name" | tr -d '"')
在与 VM 建立 SSH 会话之前,首先要在群集管理器中创建 控制台 资源。
az networkcloud virtualmachine console create \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --extended-location name="${CM_EXTENDED_LOCATION}" type="CustomLocation" \ --enabled True \ --key-data "${CONSOLE_PUBLIC_KEY}" \ [--expiration "${CONSOLE_EXPIRATION_TIME}"]
如果省略参数
--expiration
,则创建控制台资源后,过期时间将默认为一天。 另请注意,日期和时间expiration
格式 必须 符合RFC3339否则创建控制台资源会失败。注意
有关此命令的完整概要,请调用
az networkcloud console create --help
。成功创建控制台资源后,检索创建专用链接终结点(PLE)所需的专用链接服务标识符
export pls_resourceid=$(az networkcloud virtualmachine console show \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --query "privateLinkServiceId")
此外,检索 VM 访问 ID。 必须在会话期间
user
ssh
使用此唯一标识符。virtual_machine_access_id=$(az networkcloud virtualmachine console show \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --query "virtualMachineAccessId")
注意
有关此命令的完整概要,请调用 az networkcloud virtualmachine console show --help
。
建立专用网络连接性
若要与虚拟机建立安全会话,需要在网络与群集管理器的专用网络之间建立专用网络连接。
此专用网络依赖于Azure 专用链接终结点(PLE)和Azure 专用链接服务(PLS)。
群集管理器会自动创建 PLS,以便可以在网络与群集管理器的专用网络之间建立专用网络连接。
本部分提供了一个分步指南,可帮助你建立专用网络连接。
创建 PLE,以便在网络与群集管理器的专用网络之间建立专用和安全连接。 需要创建控制台资源中 获取的 PLS 资源 ID。
az network private-endpoint create \ --connection-name "${PRIVATE_ENDPOINT_CONNECTION_NAME}" \ --name "${PRIVATE_ENDPOINT_NAME}" \ --private-connection-resource-id "${pls_resourceid}" \ --resource-group "${PRIVATE_ENDPOINT_RG}" \ --vnet-name "${PRIVATE_ENDPOINT_VNET}" \ --subnet "${PRIVATE_ENDPOINT_SUBNET}" \ --manual-request false
注意
每个群集管理器只需要一个专用终结点。
检索分配给 PLE 的专用 IP 地址,在建立会话时需要该
ssh
地址。export ple_interface_id=$(az network private-endpoint list --resource-group ${PRIVATE_ENDPOINT_RG} --query "[0].networkInterfaces[0].id" -o tsv) export sshmux_ple_ip=$(az network nic show --ids $ple_interface_id --query 'ipConfigurations[0].privateIPAddress' -o tsv) echo "sshmux_ple_ip: ${sshmux_ple_ip}"
使用虚拟机建立 SSH 会话
此时,你有virtual_machine_access_id
和 。sshmux_ple_ip
此输入是与 VM 建立会话所需的信息。
VM 控制台服务是将 ssh
会话“中继”到指定 VM 的服务器。 间接 sshmux_ple_ip
引用 VM 控制台服务和 virtual_machine_access_id
VM 的标识符。
重要
VM 控制台服务侦听端口 2222
,因此 必须在 命令中 ssh
指定此端口号。
SSH [-i path-to-private-SSH-key] -p 2222 $virtual_machine_access_id@$sshmux_ple_ip
VM 控制台服务旨在仅允许每个虚拟机一个会话。 与 VM 建立另一个成功会话的任何人都可以关闭现有会话。
重要
用于对会话进行身份验证的专用 SSH 密钥(默认值: $HOME/.ssh/id_rsa
)必须与创建控制台资源时作为参数传递的公钥相匹配。
更新控制台资源
可以通过更新到期日期/时间和/或更新与 VM 创建会话时使用的公钥来禁用给定 VM 的会话。
az networkcloud virtualmachine console update \
--virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
--resource-group "${VM_RESOURCE_GROUP}" \
[--enabled True | False] \
[--key-data "${CONSOLE_PUBLIC_KEY}"] \
[--expiration "${CONSOLE_EXPIRATION_TIME}"]
如果要禁用对 VM 的访问,则需要使用参数 enabled False
更新控制台资源。 此更新将关闭任何现有会话并限制任何后续会话。
注意
在创建与 VM 的会话之前,必须将相应的控制台资源设置为 --enabled True
。
当控制台 --expiration
时间过期时,它会关闭与控制台资源对应的任何会话。 需要使用将来的值更新过期时间,以便可以建立新会话。
更新控制台的公共 SSH 密钥时,VM 控制台服务会关闭控制台资源引用的任何活动会话。 建立新会话时,必须提供匹配的专用 SSH 密钥与新的公钥匹配。
清理(可选)
若要清理 VM 控制台环境设置,需要删除控制台资源和专用链接终结点。
删除控制台资源
az networkcloud virtualmachine console delete \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${VM_RESOURCE_GROUP}"
删除专用链接终结点
az network private-endpoint delete \ --name ${PRIVATE_ENDPOINT_NAME}-ple \ --resource-group ${PRIVATE_ENDPOINT_NAME}-rg