通过 SSH 访问已启用 Azure Arc 的服务器

已启用 Arc 的服务器的 SSH 支持与已启用 Arc 的服务器的基于 SSH 的连接,而无需公共 IP 地址或其他开放端口。 此功能可采用交互方式使用、自动化或与现有的基于 SSH 的工具一起使用,从而让现有的管理工具可以对已启用 Azure Arc 的服务器产生更大的影响。

主要优点

对已启用 Arc 的服务器的 SSH 访问提供了以下主要优势:

  • 无需公共 IP 地址或开放 SSH 端口
  • 访问 Windows 和 Linux 计算机
  • 能够以本地用户或 Azure 用户(仅限 Linux)身份进行登录
  • 支持其他具有配置文件支持的基于 OpenSSH 的工具

先决条件

若要启用此功能,确保执行以下操作:

  • 确保已启用 Arc 的服务器具有“1.31.xxxx”或更高版本的混合代理版。 运行:已启用 Arc 的服务器上的 azcmagent show
  • 确保已启用 Arc 的服务器已启用“sshd”服务。 如果是 Linux 计算机,可以通过包管理器安装 openssh-server,且需要启用。 需要在 Windows 上启用 SSHD。
  • 确保已分配“所有者”或“参与者”角色。

使用 Microsoft Entra 凭据进行身份验证还有其他要求:

  • 必须在已启用 Arc 的服务器上安装 aadsshloginaadsshlogin-selinux(视情况而定)。 这些包与 Azure AD based SSH Login - Azure Arc VM 扩展一起安装。

  • 为 VM 配置角色分配。 使用两个 Azure 角色来授权 VM 登录:

    • 虚拟机管理员登录:分配了此角色的用户可以使用管理员权限登录到 Azure 虚拟机。
    • 虚拟机用户登录:分配了此角色的用户可以使用常规用户权限登录到 Azure 虚拟机。

    为 VM 分配“所有者”或“参与者”角色的 Azure 用户不会自动获得在 Microsoft Entra 中通过 SSH 登录到 VM 的特权。 控制虚拟机的用户群和可访问虚拟机的用户群之间存在有意的(和经过审核的)分隔。

    注意

    虚拟机管理员登录角色和虚拟机用户登录角色使用 dataActions,可以在管理组、订阅、资源组或资源范围内进行分配。 建议在管理组、订阅或资源级别而不是在单个 VM 级别分配角色。 此做法可避免每个订阅的 Azure 角色分配限制达到上限的风险。

可用性

目前,已启用 Arc 的服务器支持的所有区域都支持对已启用 Arc 的服务器进行 SSH 访问。

使用入门

注册 HybridConnectivity 资源提供程序

注意

这是需要对每个订阅执行的一次性操作。

检查是否已注册 HybridConnectivity 资源提供程序 (RP) :

az provider show -n Microsoft.HybridConnectivity -o tsv --query registrationState

如果尚未注册 RP,请运行以下命令:

az provider register -n Microsoft.HybridConnectivity

此操作可能需要 2-5 分钟才能完成。 在继续操作之前,请检查 RP 是否已注册。

创建默认连接终结点

注意

不需要为大多数用户运行以下步骤,因为在首次连接时应该会自动完成此步骤。 必须为每个已启用 Arc 的服务器完成此步骤。

az rest --method put --uri https://management.chinacloudapi.cn/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2023-03-15 --body '{"properties": {"type": "default"}}'

注意

如果是使用 PowerShell 中的 Azure CLI,则应使用以下项。

az rest --method put --uri https://management.chinacloudapi.cn/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2023-03-15 --body '{\"properties\":{\"type\":\"default\"}}'

验证终结点创建:

az rest --method get --uri https://management.chinacloudapi.cn/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2023-03-15

安装本地命令行工具

此功能当前打包在 Azure CLI 扩展和 Azure PowerShell 模块中。

az extension add --name ssh

注意

Azure CLI 扩展版本必须高于 2.0.0。

在已启用 Arc 的服务器上启用功能

若要使用 SSH 连接功能,必须更新已启用 Arc 的服务器的“连接终结点”中的服务配置,允许 SSH 连接到特定端口。 只允许连接单个端口。 CLI 工具尝试在运行时更新允许的端口,但可以使用以下方法手动配置端口:

注意

更新“服务配置”后可能会出现延迟,然后才能连接。

az rest --method put --uri https://management.chinacloudapi.cn/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default/serviceconfigurations/SSH?api-version=2023-03-15 --body "{\"properties\": {\"serviceName\": \"SSH\", \"port\": 22}}"

如果使用非默认端口进行 SSH 连接,请将端口 22 替换为上一命令中所需的端口。

可选操作:安装 Azure AD 登录扩展

可以从 Arc 服务器的扩展菜单添加 Azure AD based SSH Login - Azure Arc VM 扩展。 还可以通过包管理器 apt-get install aadsshlogin 或以下命令在本地安装 Azure AD 登录扩展。

az connectedmachine extension create --machine-name <arc enabled server name> --resource-group <resourcegroup> --publisher Microsoft.Azure.ActiveDirectory --name AADSSHLogin --type AADSSHLoginForLinux --location <location>

示例

要查看示例,请查看 az ssh 的 AZ CLI 文档页面或 Az.Ssh 的 Azure PowerShell 文档页面。

后续步骤