你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过 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.azure.com/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.azure.com/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.azure.com/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.azure.com/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 文档页面。

后续步骤